2016-05-11 63 views
1

運行的Apache V2.4,PHP V5.6瓦特/ PHP-FPM,在CentOS 7越來越WSS與安全通道及工作衝高

所以我試圖讓WSS與安全通道&棘輪工作。我已經有了Ratchet的Hello World(http://socketo.me/docs/hello-world),可以在端口8080上使用非ssl上的測試代碼成功運行。我可以從同一臺機器telnet,也可以從另一臺機器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 

棘輪輸出樣本:

[[email protected] 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

[[email protected] ~]$ 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 
+0

PHP文件裏面,你使用nginx的或Apache? – mitchken

+0

apache v2.4,初步問題反映。 – Zxurian

+0

你能否確保一切正確設置也複製你的stunnel配置? – mitchken

回答

0

我有我自己的機器上運行的棘輪的WebSocket和我也使用Apache2.4 爲了使其工作在SSL我做了:

代理通插座

內(在/ etc/apache2的/)apache2.conf我加

這個經過我的WebSocket端口8080上運行到WSS://alpha.example.com/wss/

使確保您的安全通道的配置是正確的,這是我做的 (在/ etc /安全通道/)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 

提醒:改變路徑我用你的路徑鍵您鍵正在使用。

啓動我的服務器我的用戶端口8080作爲棘輪例如

$webSock->listen(8080, '0.0.0.0'); // Binding to 0.0.0.0 means remotes can connect 
+1

我會在今晚嘗試通過代理,看看是否會返回通信 – Zxurian