我构建了一个php websocket服务器javascript客户端来连接它。没有SSL,它工作正常。我的下一步是使用wss而不是ws来提高安全性(在网站上启用https)。
我的目的是解密传入流量并使用CentOS 6上的stunnel将其重定向到websocketserver。
第一步是简单地将请求从客户端重定向到服务器:
客户请求: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。
客户端发出的每个请求都是abortet(已检查过的firebug控制台)。在Chrome上,它显示状态:已完成,没有任何进一步的信息。
我完全不知道错误是什么,所以任何帮助都会很棒。谢谢!
答案 0 :(得分: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
注意:标记!!没有有效的评论!我插入它们只是为了显示变化。
答案 1 :(得分:0)
我刚遇到同样的问题,我想为其他人搜索这个答案,因为它杀了我。在我的php中,我使用棘轮编写了一个websocket,我正在使用laravel artisan命令进行调用。如果您在本地进行开发,我相信您可以将stunnel.pem和CAFile添加到您的钥匙串中(如果是在Mac上......第二个想法我甚至认为如果在本地工作,您一定需要CAFile )你应该能够通过wss上的stunnel访问你的websocket。但是,如果您正在使用实时网络服务器,则需要获得密钥认证。在我的例子中,我使用openSSL为stunnel.pem生成了我的stunnel键,并使用正SSL进行了认证。然后我添加了CAFile选项并将他们发回给我的crt文件链接起来。如果您正在使用stunnel vision&#34;,请在stunnel.conf中使用选项foreground = yes,并记住DrakeBlack指出DO NOT USE client = yes。在这种情况下,您不是客户端,您是服务器。