str*_*rat 7 php firefox html5 stunnel websocket
我有一个有效的WebSocket非安全应用程序.但我的网站使用https,我需要一个安全的WebSocket连接,以避免Firefox抱怨连接不安全的事实.
我使用php-websocket-server为我的WebSocket服务器使用PhP 5.2.9,所以当我使用WebSocket安全时,我无法使用openssl_decrypt函数解密数据包.
这就是为什么我使用stunnel来解密客户端使用wss发送的数据包,为了做那个我绑定的客户端WebSocket到12345端口服务器WebSocket到54321端口,然后我在服务器模式中添加了一个stunnel:
[wsServer]
accept = 12345
connect = 192.168.1.227:54321
Run Code Online (Sandbox Code Playgroud)
使用此配置,我的应用程序可以通过https + wss在Chrome上正常运行.但在Firefox有握手期间是一个问题,似乎Sec-WebSocket-Version并Sec-WebSocket-Key在标题中失踪.我不明白,因为它可以通过http + ws在Firefox上运行.
在此先感谢您的帮助.
编辑:我在端口12345上添加了证书的例外,现在握手进展顺利,因为我认为Firefox现在有了Sec-WebSocket-Key.
这里使用Firefox的工作头请求(大于Chrome请求):
GET / HTTP/1.1
Host: 192.168.1.227:12345
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive, Upgrade
Sec-WebSocket-Version: 13
Origin: https://192.168.1.227
Sec-WebSocket-Protocol: HyBi-00
Sec-WebSocket-Key: 65nHN33M6drIPjQHcGK8pA==
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Run Code Online (Sandbox Code Playgroud)
小智 10
如果您在本地使用自动签名证书,则必须在两台服务器上批准它:https://在端口443上运行,而wss://在端口12345上运行,使用Firefox.
我认为您的浏览器不允许安全的websocket连接以及为什么缺少某些标头.