php websocket redirect с помощью stunnel

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

Я собираюсь расшифровать входящий трафик и перенаправить его на веб-сокет-сервер, используя stunnel в CentOS 6.

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

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

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

Базовая конфигурация 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.

Каждый запрос отправляется клиентом gehts abortt (проверяется консоль firebug). На Chrome написано статус: завершено, без дополнительной информации.

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

2 ответа

Решение

Это наконец работает!!! Даже с 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

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

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

Другие вопросы по тегам