2016-05-11 16 views
1

Lauf Apache v2.4, PHP v5.6 w/php-fpm, auf CentOS 7immer WSS mit stunnel Arbeiten & Ratsche

So WSS Ich versuche, mit stunnel Arbeit zu bekommen & Ratsche. Ich habe Ratchets Hallo Welt (http://socketo.me/docs/hello-world) erfolgreich mit dem Test-Code auf Nicht-SSL bei Port 8080. Ich kann Telnet von der gleichen Maschine, sowie Telnet von einer anderen Maschine.

Durch das Lesen, ich weiß, dass Ratchet nicht unterstützt SSL - Verbindungen, sondern durch die Verpackung der Kommunikation mit Stunnel, so dass ich Stunnel mit einem geeigneten Zertifikat auf Port 8443 abhört, die funktionieren scheint (wie durch die Logdatei).

Wenn ich versuche, eine Verbindung mit wss aus Firefox Scratchpad, bekomme ich den folgenden Fehler: Firefox can't establish a connection to the server at wss://testserver.testdomain.com:8443 Ich kann die Verbindung durch die verschiedenen Protokolldateien erstellt sehen, aber irgendwo auf der Linie Kommunikation schlägt fehl, da ich nicht kann Erstellen Sie eine solide WSS-Verbindung. Irgendwelche Ideen, was ich vermisse oder wo ich versaut habe? Log/Code unten

Scratchpad-Code

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 config:

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

[hublistener] 
accept = 8443 
connect = 8080 

Stunnel log:

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 

Ratchet Beispielausgabe:

[[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-Verbindung 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

verwenden Sie nginx oder Apache? – mitchken

+0

Apache v2.4, ursprünglich Frage zu reflektieren. – Zxurian

+0

Könntest du sicherstellen, dass alles richtig eingestellt ist, kopiere auch deine Stunnel-Konfiguration? – mitchken

Antwort

0

Ich habe eine Ratsche WebSocket auf meinem eigenen Rechner läuft und ist auch mit Apache2.4 Um es über SSL funktioniert Ich tat:

Proxy übergeben den Sockel

innen (/ etc/apache2 /) apache2.conf Ich habe

dies geht mein websocket auf Port 8080 zu WSS läuft: //alpha.example.com/wss/

zu machen sicher, dass Ihre stunnel Config ist richtig, das ist, was ich tat innerhalb von (/ 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 

ERINNERUNG: die Pfade ich dir Pfade verwendet, um die Schlüssel ändern, um Ihre Schlüssel benutzen.

in der PHP-Datei, die meinen Server I Benutzer-Port 8080, wie in dem Ratsche Beispiel startet

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

Ich werde versuchen, den Proxy-Pass heute Abend, um zu sehen, ob es zurück Kommunikation haben wird – Zxurian