首页/网络/协议速查/TLS 版本演进与弃用状态

TLS 版本演进与弃用状态

从 SSL 2.0 到 TLS 1.3:每一代都在修补上一代的密码学缺陷;2020 年后浏览器普遍只许 TLS 1.2+,1.0/1.1 已进入弃用清单。

协议速查网络更新于 2026-10-13

从 SSL 到 TLS 1.3

SSL 与 TLS 是一脉相承的传输层加密协议:每一代都在修补上一代暴露的密码学缺陷。SSL 2.0 与 3.0 已因 POODLE 等漏洞被彻底禁用,TLS 1.0 与 1.1 在 RFC 8996 中被正式弃用,现代浏览器与主流服务普遍只接受 TLS 1.2 及以上。TLS 1.3 进一步砍掉了静态 RSA 密钥传输、重协商和一堆弱算法,握手更快、默认配置更安全。

版本演进与现状

版本年份现状与要点
SSL 2.0 与 3.01995 与 1996已废弃禁用,存在 POODLE 等一系列结构性问题
TLS 1.01999RFC 8996 正式弃用,只应出现在无法升级的遗留系统
TLS 1.12006同样被弃用,支付与政务合规已明确禁止
TLS 1.22008当前兼容性最好的基线,套件选择正确时依然安全
TLS 1.32018推荐默认,握手简化为 1-RTT,移除静态 RSA 与重协商

探测对端支持的版本

探测对端支持的版本
openssl s_client -connect example.com:443 -tls1_3 -brief </dev/null 2>&1 | head -5   # 只试 1.3
openssl s_client -connect example.com:443 -tls1_2 -brief </dev/null 2>&1 | head -5   # 只试 1.2
openssl s_client -connect example.com:443 -tls1 </dev/null 2>&1 | head -3             # 验证旧版本是否已关闭
nmap --script ssl-enum-ciphers -p 443 example.com                                     # 一次列出支持的版本与套件

s_client -brief 输出读法

字段含义怎么判断
Protocol最终协商出的协议版本低于 TLSv1.2 就需要整改
Ciphersuite选中的密码套件出现 CBC 类或因 RSA 密钥传输,说明缺前向保密
Server Temp Key服务端临时密钥算法带 ECDHE 或 X25519 才有前向保密
Verify return code证书校验结果0 表示通过,其余值对应具体失败原因
Session-ID 或 TLS session ticket会话恢复信息影响断线重连的握手开销
下调版本下限前先做客户端矩阵统计:老旧 Android 设备、Java 8 早期补丁、工控终端都可能只支持 1.0 或 1.1。正确做法是引导升级而不是把编码器一路留着。
为了兼容个别老客户端长期保留 TLS 1.0,会让整站的合规状态失效,PCI DSS 等场景明确不允许,安全扫描也会持续报高危。

易错点

  • 只改 Web 服务端的协议版本,忘了负载均衡、CDN 回源、数据库连接等其它 TLS 端点,扫描时仍能连通旧版本
  • 把 TLS 1.3 当作万能解,客户端套件配置过窄时反而握手失败,应用浏览器矩阵实测确认
  • 关闭旧版本前没统计真实客户端分布,一刀切后部分用户直接无法访问,且回滚窗口很短
  • 把协议版本与密码套件当成两个独立选项分别调优,结果出现版本与套件不匹配导致握手失败
  • 只看服务端配置不验证实际协商结果,禁用 1.0 的操作没生效也不知道,正确做法是用 s_client 锁定旧版本复测并确认已拒绝

数据来源与参考

  • RFC 8446
  • RFC 8996(弃用 TLS 1.0/1.1)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌