2014-09-15 3 views
0

Я построил javascript-сервер сервера php для подключения к нему. Он работает нормально без SSL. Мой следующий шаг - улучшить безопасность с помощью wss вместо ws (таким образом, включение https на веб-сайте).php websocket redirect with stunnel

Моя цель заключается в расшифровывать входящий трафик и перенаправлять его на websocketserver с использованием Stunnel на CentOS 6.

Первый шаг просто перенаправить запросы от клиентов к серверу:

клиент-запрос : ws://soundjack.eu:9030/wsServer2.php

сервер: сокет создан прослушивает 144.76.81.210:9090 работает php -q wsServer2.php

coresponding Stunnel конфигурации:

; Some security enhancements for UNIX systems - comment them out on Win32 
chroot = /var/run/stunnel/ 
;setuid = nobody 
;setgid = nobody 
; PID is created inside the chroot jail 
pid = /stunnel.pid 

; Some performance tunings 
socket = l:TCP_NODELAY=1 
socket = r:TCP_NODELAY=1 
;compression = zlib 

; Some debugging stuff useful for troubleshooting 
debug = 7 
output = /var/log/stunnel/stunnel.log 

; Use it for client mode 
client = yes 

; Service-level configuration 
[wsServer] 
accept = 127.0.0.1:9030 
connect = 127.0.0.1:9090 

Stunnel начинает правильно и прослушивает порт 9030.

Каждый запрос, который sendet на abortet клиента Gehts (проверено поджигатель консоли). В Chrome говорится о статусе: завершено, без дополнительной информации.

Я совершенно не знаю, что такое ошибка, поэтому любая помощь будет отличной. Благодаря!

+0

Если какая-либо дополнительная информация требуется, я добавлю ее, конечно, – DrakeBlack

ответ

0

Это окончательно работает !!! Даже с SSL он отлично работает.

Ключ был шанс конфиг из Stunnel работать правильно (обновление с помощью SSL сейчас):

/etc/stunnel/stunnel.conf:

; Certificate/key is needed in server mode and optional in client mode 
cert = /path/to/<myCert>.pem 
key = /path/to/<myKey>.key 

; Protocol version (all, SSLv2, SSLv3, TLSv1) 
sslVersion = all 

; Some security enhancements for UNIX systems - comment them out on Win32 
chroot = /var/run/stunnel/ 

; PID is created inside the chroot jail 
pid = /stunnel.pid 

; Some performance tunings 
socket = l:TCP_NODELAY=1 
socket = r:TCP_NODELAY=1 
;compression = zlib 

; Some debugging stuff useful for troubleshooting 
debug = 7 
output = /var/log/stunnel/stunnel.log 
;foreground = yes 

; Use it for client mode 
;client = yes      !! turn to server mode 

; Service-level configuration 
[wsServer] 
accept = 0.0.0.0:9030    !! listen to all addresses 
connect = 127.0.0.1:9090 

Примечание: знаки с !! это недействительные комментарии! Я вставил их только, чтобы показать изменения.

+0

Я пробовал это сам, но он дергает меня за эту ошибку, которая не имеет абсолютно никакого смысла. [Failed: /etc/stunnel/stunnel.conf] Вы должны проверить, что вы указали pid = в своем конфигурационном файле –

0

Я просто столкнулся с этой проблемой, и я хотел добавить к этому ответу, чтобы кто-то еще искал его, потому что он убивал меня. В моем php я написал websocket, используя храповик, который я вызывал с помощью команды laravel artisan. Если вы разрабатываете локально, я считаю, что вы можете добавить stunnel.pem и CAFile в ваш keychain (если на Mac ... по-моему, я даже не думаю, что вам обязательно нужен CAFile, если вы работаете локально), и вы должны иметь доступ к вашему websocket с помощью stunnel над wss. Однако, если вы работаете на своем реальном веб-сервере, вам нужно получить свои сертификаты. В моем случае я создал свои ключи stunnel для stunnel.pem, используя openSSL, и получил их с использованием положительного SSL. Затем я добавил параметр CAFile и связал файл crt, который они мне отправили. Если вы получаете «звездное зрение», используйте опцию foreground = yes в stunnel.conf и помните, как указывал DrakeBlack, НЕ ИСПОЛЬЗУЙТЕ клиента = да. Вы не являетесь клиентом, в этом случае вы являетесь сервером.