1

CentOS 7 で Apache v2.4、PHP v5.6、php-fpm を実行する

だから私は wss を stunnel と Ratchet で動作させようとしています。Ratchet の Hello World ( http://socketo.me/docs/hello-world ) は、ポート 8080 で非 ssl のテスト コードを使用して正常に動作しています。同じマシンから telnet を実行できるだけでなく、aa から telnet を実行することもできます。別のマシン。

読んでみると、ラチェットは ssl 接続をサポートしていないが、通信を stunnel でラップすることでサポートしていることがわかったので、ポート 8443 でリッスンする適切な証明書を使用して stunnel をセットアップしました。

Firefox のスクラッチパッドから wss を使用して接続しようとすると、次のエラーが表示されます:Firefox can't establish a connection to the server at wss://testserver.testdomain.com:8443さまざまなログ ファイルを介して接続が作成されていることがわかりますが、確実な wss 接続を作成できないため、どこかで通信が失敗しています。 . 私が欠けているものやどこで失敗しているのかについてのアイデアはありますか? 以下のログ/コード

スクラッチパッド コード

var conn = new WebSocket('wss://testserver.testdomain.com:8443');
conn.onopen = function(e) {
    console.log("Connection established!");
};

conn.onmessage = function(e) {
    console.log(e.data);
};

Stunnel 構成:

cert = /etc/httpd/ssl/ov_wildcard.pem

[hublistener]
accept = 8443
connect = 8080

Stunnel ログ:

2016.05.11 14:43:28 LOG5[38759:140614807435328]: stunnel 4.56 on x86_64-redhat-linux-gnu platform
2016.05.11 14:43:28 LOG5[38759:140614807435328]: Compiled/running with OpenSSL 1.0.1e-fips 11 Feb 2013
2016.05.11 14:43:28 LOG5[38759:140614807435328]: Threading:PTHREAD Sockets:POLL,IPv6 SSL:ENGINE,OCSP,FIPS Auth:LIBWRAP
2016.05.11 14:43:28 LOG5[38759:140614807435328]: Reading configuration from file /etc/stunnel/stunnel.conf
2016.05.11 14:43:28 LOG5[38759:140614807435328]: FIPS mode is enabled
2016.05.11 14:43:28 LOG4[38759:140614807435328]: Insecure file permissions on /etc/httpd/ssl/cert.pem
2016.05.11 14:43:28 LOG5[38759:140614807435328]: Configuration successful
2016.05.11 14:45:59 LOG5[38765:140614807430912]: Service [hublistener] accepted connection from ***.***.***.***:39124
2016.05.11 14:45:59 LOG5[38765:140614807430912]: connect_blocking: connected 127.0.0.1:8080
2016.05.11 14:45:59 LOG5[38765:140614807430912]: Service [hublistener] connected remote server from 127.0.0.1:59795

ラチェットのサンプル出力:

[zxurian@ariel dev-hub]$ php module/HubListener/websocket.php
New Connection! (307)
New Connection! (317)
Connection 317 sending message "second window line 1
" to 1 other connection
Connection 317 sending message "second window line 2
" to 1 other connection
New Connection! (318)
Connection 318 sending message "GET / HTTP/1.1
Host: testserver.testdomain.com:8443
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0 FirePHP/0.7.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Sec-WebSocket-Version: 13
Origin: https://testserver.testdomain.com
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: PrWlBjR2q6a0syT4oplnAQ==
Cookie: PHPSESSID=ci7102qouvqprhdpk483hv6ar3; exclusive_offers_popup=1; __utma=213556497.27501638.1462814210.1462827970.1462831402.3; __utmc=213556497; __utmz=213556497.1462814210.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmv=213556497.|1=l=%2F=1
x-insight: activate
Connection: keep-alive, Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket

" to 2 other connections

Telnet 接続 1

[zxurian@ariel ~]$ telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
second window line 1
second window line 2
GET / HTTP/1.1
Host: testserver.testdomain.com:8443
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0 FirePHP/0.7.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Sec-WebSocket-Version: 13
Origin: https://testserver.testdomain.com
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: PrWlBjR2q6a0syT4oplnAQ==
Cookie: PHPSESSID=ci7102qouvqprhdpk483hv6ar3; exclusive_offers_popup=1; __utma=213556497.27501638.1462814210.1462827970.1462831402.3; __utmc=213556497; __utmz=213556497.1462814210.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmv=213556497.|1=l=%2F=1
x-insight: activate
Connection: keep-alive, Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
4

1 に答える 1

0

私は自分のマシンで Ratchet WebSocket を実行しており、Apache2.4 も使用しています。SSL 経由で動作させるために、次のことを行いました。

プロキシはソケットを渡します

内部 (/etc/apache2/) apache2.confに追加しました

    //added for the websocket over SSL
    ProxyPass /wss/ ws://alpha.example.com:8080/

これにより、ポート 8080 で実行されている WebSocket が wss://alpha.example.com/wss/ に渡されます。

stunnel 構成が正しいことを確認するために、これは (/etc/stunnel/) stunnel.conf内で行ったことです。

cert = /etc/letsencrypt/live/www.example.com/cert.pem
key = /etc/letsencrypt/live/www.example.com/privkey.pem
[wss]
accept = 8082
connect = 8080

リマインダー: 私が使用したキーへのパスを、あなたのキーが使用しているパスに変更してください。

サーバーを起動するPHPファイル内で、ラチェットの例のようにポート8080を使用します

$webSock->listen(8080, '0.0.0.0'); // Binding to 0.0.0.0 means remotes can connect
于 2016-05-12T20:09:47.420 に答える