![](/img/trans.png)
[英]ERR_SSL_PROTOCOL_ERROR browser error message while running a https server in 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.createSecureContext
的ca
選項。 它應該在您的提供商的網站上公開。
希望這可以幫助。
如今,當我們的服務器(例如 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”)。 ↪ssl_ciphers
指令)中接受遺留密碼,比如 socat 或(最后的手段) socat23來檢查你的客戶支持哪個版本,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.