从 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.0 | 1995 与 1996 | 已废弃禁用,存在 POODLE 等一系列结构性问题 |
| TLS 1.0 | 1999 | RFC 8996 正式弃用,只应出现在无法升级的遗留系统 |
| TLS 1.1 | 2006 | 同样被弃用,支付与政务合规已明确禁止 |
| TLS 1.2 | 2008 | 当前兼容性最好的基线,套件选择正确时依然安全 |
| TLS 1.3 | 2018 | 推荐默认,握手简化为 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 等场景明确不允许,安全扫描也会持续报高危。