安全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-VersionSec-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 
+0

如果你可以在工作和非工作情况下在两个方向显示实际的标题/握手,我可以很快确定问题是什么。 – kanaka 2012-07-18 16:56:06

如果您在本地使用自动签名证书工作,你必须批准它在两个服务器https://开头上运行端口443和wss://使用Firefox在端口12345上运行。

我认为您的浏览器不允许安全的websocket连接,并且为什么有​​些标题丢失。

+1

当我在控制台中查看WebSocket请求时,我右键单击它,并在新选项卡中打开请求。新选项卡中的URL为“https://192.168.1.227:12345 /',Firefox要求我接受12345端口的证书。第一次尝试时,Firefox要求我接受https端口但不接受端口12345. – strat 2012-07-19 06:16:20

+1

答案是对的,但有点不清楚。 好吧,在这里。当你试图用wss://mysite.com:12345打开wss时,Firefox会继续给你提供错误,直到你打开一个单独的Firefox标签并尝试点击URL [https]://mysite.com: 12345 并确认安全异常(就像您在Firefox上正常执行任何基于https的连接一样)。这真的很奇怪,只发生在Firefox中。 – 2014-01-30 11:56:16

+0

谢谢!!!你的回答帮助了我很多。 + 1ed :) – 2014-08-03 01:35:23