使用正确的 SSL 证书连接不安全(Websockets)

Posted

技术标签:

【中文标题】使用正确的 SSL 证书连接不安全(Websockets)【英文标题】:Connection not secure with correct SSL certificate(Websockets) 【发布时间】:2020-02-22 08:34:20 【问题描述】:

已为 https://www.govtschemes.in 正确颁发 SSL 证书

但是我有基于 Python 和 Nodejs 的 Websocket 服务器,它们使用相同的域(只是为了节省域+SSL 成本)但在不同的端口 31333

所以在 WebSocket 服务器中它绑定为:wss://www.govtschemes.in:31333

在某些 Firefox 浏览器中,Websocket 客户端能够毫无问题地联系这些服务器。但对于大多数 Firefox 浏览器,它们不是。对于他们,我在地址栏中输入https://www.govtschemes.in:31333确认安全异常。然后它开始正常工作。

根据Comodo site SSL 证书将适用于多个端口(31333)。

那么为什么我(或我的客户)需要为wss://www.govtschemes.in:31333 设置此安全例外,以便 javascript 浏览器客户端代码可以联系 Websocket 远程服务器?

【问题讨论】:

您正在尝试将 HTTP 与使用 WebSocket 的服务器进行通信。也许,这是问题所在。您是否按“了解更多...”以了解更多信息。并尝试使用wireshark 捕获流量,以便更好地了解问题所在...... 【参考方案1】:

这是服务器配置错误。它只发送叶证书,但不发送链证书。

$ openssl s_client -connect www.govtschemes.in:31333
...
Certificate chain
  0 s:CN = govtschemes.in
    i:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA

与此相反,端口 443(即默认 https)中的服务器发送所有内容:

$ openssl s_client -connect www.govtschemes.in:443
...
Certificate chain
 0 s:CN = govtschemes.in
   i:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
 1 s:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
   i:C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
 2 s:C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
   i:C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root

请注意,仅仅因为您在不同的服务器上使用相同的证书并不意味着与服务器的 SSL 连接将表现相同。这些是不同的服务器,它们服务于不同的证书链,也支持不同的 TLS 版本。

【讨论】:

谁应该发送链证书?我的基于 Nodejs Websocket 的服务器? @user5858:证书链应该由当前未发送链的服务器发送,从而导致问题。这是端口 31333 上的服务器,即您的 Nodejs Websocket 服务器。端口 443 上的服务器已经正确发送链,因此无需更改此服务器。

以上是关于使用正确的 SSL 证书连接不安全(Websockets)的主要内容,如果未能解决你的问题,请参考以下文章

SSL证书无效是啥原因?

如何选择正确SSL安全证书

Ubuntu apache创建有效的自签名证书ssl https(删除连接不安全)[重复]

excel用自网站功能 为啥会出现出现基础连接已经关闭: 未能为 SSL/TLS 安全

SSL证书没有绿锁您与此网站建立的连接并非完全安全解决办法

发生ssl错误 无法建立到该服务器的安全连接