使用正确的 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)的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu apache创建有效的自签名证书ssl https(删除连接不安全)[重复]