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 工具

数秒内验证并检查你的证书。

相关文章