TLS 版本与密码套件不匹配:协商失败
· CSR.plus 团队

- •握手失败并提示"no shared cipher"或协议版本错误,意味着双方没有兼容的 TLS 选项。
- •将服务器启用的版本和套件与客户端支持的内容对比。
- •启用现代且宽泛的组合:TLS 1.2 + 1.3,配标准 ECDHE AES-GCM 套件。
"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 个监控。
联盟链接——你无需多付任何费用,我们可能获得佣金。
免费 SSL/TLS 工具
数秒内验证并检查你的证书。