Secure WebSocket(wss://)在Firefox上不起作用

问题描述 投票:7回答:1

我有一个有效的WebSocket不安全应用程序。但是我的网站使用https,并且我需要一个安全的WebSocket连接,以避免Firefox抱怨该连接不安全的事实。

我正在使用PhP 5.2.9的WebSocket服务器使用php-websocket-server,因此当我使用WebSocket安全时,无法使用openssl_decrypt函数解密数据包。

这就是为什么我使用stunnel来解密使用wss的客户端发送的数据包的方法,将客户端WebSocket绑定到12345端口,将服务器WebSocket绑定到54321端口,然后在服务器模式下添加了一个隧道:

[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
php html5 firefox websocket stunnel
1个回答
10
投票

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

我认为您的浏览器不允许安全的websocket连接,以及为什么缺少某些标头的原因。

[[@ Faisal评论的更新,因为它非常重要]答案是正确的,但还不清楚。好的,就是这里。当您尝试打开wss时,请说使用wss://mysite.com:12345,Firefox将继续给您错误,直到您打开单独的Firefox选项卡并尝试访问URL [https]:// mysite。 com:12345,并确认安全例外(就像您在Firefox上通常对基于https的任何连接一样)。这真的很奇怪,仅在Firefox中会发生。

© www.soinside.com 2019 - 2024. All rights reserved.