WebSocket with SSL



是否可以使用HTTPS的WebSockets?

当切换到HTTPS时,我的WebSocket会返回一个安全错误,并与常规HTTP完美配合。

下面是一个片段;

socket = new WebSocket("ws://my_www:1235"); 

WebSocket连接以HTTP或HTTPS握手开始其生命周期。当通过HTTP访问页面时,可以使用WS或WSS(WebSocket-secure:WS-overTLS)。然而,当您的页面通过HTTPS加载时,您只能使用WSS——浏览器不允许"降级"安全性。

您不能通过HTTPS使用WebSockets,但可以通过TLS使用WebSocket(HTTPS是通过TLS的HTTP)。只需在URI中使用"wss://"。

我相信最近版本的Firefox不会让你从HTTPS页面使用非TLS WebSockets,但反过来应该不会有问题。

除了kanaka/peter的回答之外,还有一个额外的警告:如果您使用WSS,并且服务器证书对浏览器来说是不可接受的,那么您可能不会得到任何浏览器呈现的对话框(就像在网页中发生的那样)。这是因为WebSockets被视为所谓的"子资源",证书接受/安全异常/任何对话框都不会为子资源呈现。

为了支持@oberstet的答案,如果浏览器不信任证书(例如,您得到一个"此网站不安全,您想继续吗?"),一个解决方案是打开浏览器选项,导航到证书设置,添加主机并将websocket服务器作为例外发送给证书提供商。

例如,添加"example-wss-domain.org/6001"作为"Certificate Provider Ltd"的例外。

在firefox中,这可以通过"about:preferences"和搜索"Certificates"来完成

相关内容

  • 没有找到相关文章

最新更新