簡體   English   中英

ERR_SSL_PROTOCOL_ERROR 僅適用於某些用戶(nodejs,express)

[英]ERR_SSL_PROTOCOL_ERROR only for some users (nodejs, express)

只有部分(不是全部)用戶在嘗試訪問我的快速站點時在 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 實驗室可能能夠告訴你出了什么問題

我用谷歌搜索沒有成功,有人知道問題可能是什么嗎? 泰。

最后我放棄了 1&1 並使用了 GoDaddy 的 CA 服務,問題就消失了。

握手失敗的可能來源可能是缺少中間證書,即tls.createSecureContextca選項。 它應該在您的提供商的網站上公開。

希望這可以幫助。

如今,當我們的服務器(例如 1&1)安全配置時,僅支持 tls v1.2 和 tls v1.3..

那么你如何調試這個:

  • 使用SSL 實驗室測試來掃描您的站點,看看支持哪些密碼,或者在我們的 nginx/apache 配置中查看

  • tail -f服務器日志,尤其是 catchall/other_vhosts 日志文件,因為 ssl 協議錯誤可能在服務器無法決定名稱時出現在站點日志和通用 catchall 日志中

  • 嘗試更新用戶 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 以下的所有內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM