安全WebSocket(wss://)在Firefox上不起作用
我有一个可用的WebSocket非安全应用程序。但是我的网站使用https,我需要一个Secure WebSocket连接来避免Firefox抱怨连接不安全的事实。安全WebSocket(wss://)在Firefox上不起作用
我使用php-websocket-server为我的WebSocket服务器与PhP 5.2.9,所以当我使用WebSocket安全我不能用openssl_decrypt函数解密数据包。
这就是为什么我为了解密使用WSS,这样做,我绑定客户端的WebSocket到12345端口的服务器的WebSocket到54321端口客户端发送的数据包使用stunnel,然后我说在服务器模式下的安全通道:
[wsServer]
accept = 12345
connect = 192.168.1.227:54321
使用此配置,我的应用程序可以通过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
如果您在本地使用自动签名证书工作,你必须批准它在两个服务器https://开头上运行端口443和wss://使用Firefox在端口12345上运行。
我认为您的浏览器不允许安全的websocket连接,并且为什么有些标题丢失。
当我在控制台中查看WebSocket请求时,我右键单击它,并在新选项卡中打开请求。新选项卡中的URL为“https://192.168.1.227:12345 /',Firefox要求我接受12345端口的证书。第一次尝试时,Firefox要求我接受https端口但不接受端口12345. – strat 2012-07-19 06:16:20
答案是对的,但有点不清楚。 好吧,在这里。当你试图用wss://mysite.com:12345打开wss时,Firefox会继续给你提供错误,直到你打开一个单独的Firefox标签并尝试点击URL [https]://mysite.com: 12345 并确认安全异常(就像您在Firefox上正常执行任何基于https的连接一样)。这真的很奇怪,只发生在Firefox中。 – 2014-01-30 11:56:16
谢谢!!!你的回答帮助了我很多。 + 1ed :) – 2014-08-03 01:35:23
如果你可以在工作和非工作情况下在两个方向显示实际的标题/握手,我可以很快确定问题是什么。 – kanaka 2012-07-18 16:56:06