【问题标题】:ERR_SSL_PROTOCOL_ERROR only for some users (nodejs, express)ERR_SSL_PROTOCOL_ERROR 仅适用于某些用户(nodejs,express)
【发布时间】:2020-09-13 05:07:25
【问题描述】:

只有部分(不是所有)用户在尝试访问我的快速网站时在 Chrome 中收到 ERR_SSL_PROTOCOL_ERROR。我没有收到这个错误,所以调试起来很痛苦。

我正在使用从我的提供商 (1&1) 下载的 PFX 文件创建一个 https 服务器:

var options = {
  pfx: fs.readFileSync('./mysite_private_key.pfx'),
  passphrase: 'MYPASSPHRASE',
};
https.createServer(options, app).listen(443); 

https://whatsmychaincert.com 告诉我链是正确的,但抱怨握手:

[mysite] 有正确的链。

[mysite]:TLS 握手错误: 错误:14077438:SSL 例程:SSL23_GET_SERVER_HELLO:tlsv1 警报 内部错误 SSL Labs 可能会告诉您出了什么问题

我用谷歌搜索没有成功,有人知道问题可能是什么吗?泰。

【问题讨论】:

    标签: node.js express ssl https tls1.2


    【解决方案1】:

    最后我放弃了 1&1,使用了 GoDaddy 的 CA 服务,问题就解决了。

    【讨论】:

    • 希望您可以切换到更“道德”的 CA ;) gawker.com/5787676/…
    • 感谢您让我注意到这一点,我将对 CEO 进行更多研究。
    【解决方案2】:

    现在,当我们的服务器(例如 1&1)安全配置时,仅支持 tls v1.2 和 tls v1.3 ..

    那么你如何调试这个:

    • 使用SSL Labs Test 扫描您的站点,查看支持哪些密码,或者查看我们的 nginx/apache 配置

    • tail -f 服务器日志,尤其是 catchall/other_vhosts 日志文件,因为当服务器无法确定名称时,站点日志和通用 catchall 日志中可能会出现 ssl 协议错误

      李>
    • 尝试更新用户 chrome 以支持至少 tls 1.2

      chrome 有一些命令行开关来改变它的密码行为:

      • --ssl-version-max 指定最大 SSL/TLS 版本(“tls1.2”或“tls1.3”)。 ↪
      • --ssl-version-min 指定最低 SSL/TLS 版本(“tls1”、“tls1.1”、“tls1.2”或“tls1.3”)。 ↪

    危险区域:

    • 作为最后的手段,您可以尝试在您的 nginx-config(ssl_ciphers 指令)中接受传统密码,例如 socat 或(最后的手段)socat23,以检查您的客户支持哪个版本,

    记得在生产环境中禁用 tls v1.2 以下的所有内容

    【讨论】:

      【解决方案3】:

      握手失败的可能原因是缺少中间证书,tls.createSecureContextca 选项。它应该在您的提供商的网站上公开。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-28
        • 1970-01-01
        • 1970-01-01
        • 2020-10-24
        • 2018-11-09
        相关资源
        最近更新 更多