2016-05-11 1 views
1

Exécution Apache v2.4, v5.6 PHP w/php-FPM, sur CentOS 7obtenir WSS travailler avec stunnel et cliquets

Je suis en train de se WSS travailler avec stunnel & Ratchet. J'ai le Hello World de Ratchet (http://socketo.me/docs/hello-world) fonctionnant avec succès avec le code de test sur non-ssl au port 8080. Je peux telnet de la même machine, aussi bien que telnet d'une machine différente. En lisant, je sais que le cliquet ne supporte pas les connexions ssl, mais en encapsulant les communications avec stunnel, donc je configure stunnel avec une écoute cert appropriée sur le port 8443, qui semble fonctionner (comme en témoigne le fichier journal). Lorsque j'essaie d'établir une connexion en utilisant wss à partir du bloc-notes de Firefox, j'obtiens l'erreur suivante: Firefox can't establish a connection to the server at wss://testserver.testdomain.com:8443 Je peux voir la connexion créée par les différents fichiers journaux, mais quelque part le long de la ligne, les communications échouent car je ne peux pas créer une connexion wss solide. Des idées sur ce qui me manque ou où je me fous? Connexion/code ci-dessous

code Scratchpad

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); 
}; 

config Stunnel:

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 exemple de sortie:

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

utilisez-vous nginx ou apache? – mitchken

+0

apache v2.4, question initiale à réfléchir. – Zxurian

+0

Pourriez-vous vous assurer que tout est bien réglé aussi copier votre config stunnel? – mitchken

Répondre

0

J'ai Ratchet WebSocket courir sur ma propre machine et je suis également en utilisant Apache2.4 Pour le faire fonctionner sur SSL J'ai fait:

Proxy passer la douille

intérieur (/ etc/apache2 /) apache2.conf J'ai ajouté

ce passe mon websocket en cours d'exécution sur le port 8080 à WSS: //alpha.example.com/wss/

pour faire que votre config stunnel est correcte, c'est ce que je faisais intérieur (/ 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 

REMINDER: changer les chemins aux touches que j'ai utilisé pour te chemins de votre les touches utilisent.

dans le fichier PHP qui commence mon port I utilisateur du serveur 8080 comme dans l'exemple de cliquet

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

Je vais essayer le proxy passer ce soir pour voir si cela va l'avoir des communications de retour – Zxurian