CSR.pluscsr.plus
← 返回文章
故障排除2026-08-15•4 分鐘閱讀

TLS 版本與密碼套件不匹配:協商失敗

· CSR.plus 團隊

TLS 版本與密碼套件不匹配:協商失敗
  • •握手失敗並提示 "no shared cipher" 或協定版本錯誤,表示雙方沒有相容的 TLS 選項。
  • •將伺服器啟用的版本與套件和用戶端支援的內容對比。
  • •啟用現代且寬泛的組合:TLS 1.2 + 1.3,配標準 ECDHE AES-GCM 套件。
No shared cipher
典型訊息
openssl s_client 輸出
TLS 1.2
現代最低
啟用 1.2 + 1.3
ECDHE
金鑰交換
P-256 或 X25519
TLS 1.0/1.1
舊用戶端
已被所有主流棄用

"no shared cipher" 意味著什麼

協商期間用戶端傳送其支援的密碼套件;伺服器選擇它同樣支援的一個。如果交集為空,OpenSSL 會回報 "no protocols available" 或 "no shared cipher"。瀏覽器中的同一根本原因表現為 ERR_SSL_VERSION_OR_CIPHER_MISMATCH。舊用戶端加上只啟用 TLS 1.3 + 現代套件的伺服器,是典型的觸發場景。

閱讀 openssl 輸出

openssl s_client -connect host:443 -servername host 成功時會列印 "Protocol : TLSv1.3" 與 "Cipher : TLS_AES_256_GCM_SHA384"。失敗時會得到 "no protocols available"(版本差距)或 "no shared cipher"。用 openssl ciphers -v 列出伺服器建置提供的套件,用 s_client -tls1_2 / -tls1_3 分別測試每個版本。

正確的伺服器設定

啟用 TLS 1.2 與 TLS 1.3,停用更低版本。保留標準現代套件:1.3 用 TLS_AES_256_GCM_SHA384 與 TLS_AES_128_GCM_SHA256;1.2 用 ECDHE-ECDSA/ECDHE-RSA 配 AES-256-GCM 與 AES-128-GCM。只有確實需要支援舊用戶端時才新增舊套件,並記錄取捨。

FAQ

舊裝置需要 TLS 1.0/1.1 嗎?

所有主流瀏覽器與 OS 都已停用 TLS 1.0/1.1。為老舊嵌入式裝置支援它們是一個相容性決策——必要時將這些用戶端隔離在獨立 vhost 上。

HTTP/3 能幫助舊用戶端嗎?

不能——HTTP/3 執行在 QUIC/TLS 1.3 之上,舊用戶端不會使用。HTTP/2 與 HTTP/3 共存;協商問題發生在 TLS 層。

UptimeRobot

免費監控你的 SSL 與在線狀態

UptimeRobot 全天候監視你的憑證與端點——免費方案含 50 個監控。

免費試用 UptimeRobot

聯盟連結——你無需多付任何費用,我們可能獲得佣金。

免費 SSL/TLS 工具

數秒內驗證並檢查你的憑證。

相關文章