2016-05-11 9 views
1

Запуск Apache, PHP v2.4 v5.6 ж/PHP-FPM, на CentOS 7получение WSS работы с Stunnel и трещотки

Так что я пытаюсь получить WSS работать с Stunnel & Ratchet. У меня есть Hello World (http://socketo.me/docs/hello-world) Ratchet, который успешно работает с тестовым кодом на не-ssl на порту 8080. Я могу использовать telnet с той же машины, а также telnet с другой машины.

Прочитав, я знаю, что храповик не поддерживает соединения ssl, но делает, обертывая связи с помощью stunnel, поэтому я устанавливаю stunnel с соответствующим серфингом, прослушивающим порт 8443, который, кажется, работает (о чем свидетельствует журнальный файл).

Когда я пытаюсь установить соединение с помощью wss из блокнота Firefox, я получаю следующее сообщение об ошибке: Firefox can't establish a connection to the server at wss://testserver.testdomain.com:8443 Я вижу соединение, создаваемое с помощью различных файлов журналов, однако где-то вдоль линии связи не удается, поскольку я не могу создать сплошное соединение wss. Любые идеи о том, что мне не хватает или где я напортачиваюсь? Вход/код ниже

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

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 

Ratchet Пример вывода:

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

вы используете Nginx или апача? – mitchken

+0

apache v2.4, inital вопрос udpated для отражения. – Zxurian

+0

Не могли бы вы убедиться, что все установлено правильно, также скопируйте конфигурацию stunnel? – mitchken

ответ

0

У меня есть трещотка WebSocket работает на моей машине, и я также использую Apache2. Чтобы заставить его работать над SSL Я сделал:

Прокси-проходной разъем

внутри (/ и т.д./apache2 /) apache2.conf Я добавил

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

это проходит мой WebSocket на порту 8080 для WSS: //alpha.example.com/wss/

сделать что ваш Stunnel конфигурации правильно, это то, что я сделал внутри (/ и т.д./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 

НАПОМИНАНИЕ: изменить пути к ключам, которые я использовал для тебя путь s ваши ключи используют.

внутри файла PHP, который начинает свой сервер I пользовательский порт 8080, как и в примере храповым

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

Я попробую прокси-пропуск сегодня вечером, чтобы узнать, будет ли он возвращать связь – Zxurian