首页/安全/加密与证书速查/TLS 1.3 特性与变化
TLS 与 HTTPS60 条

TLS 1.3 特性与变化

RFC 8446 定义的现代版本:1-RTT 握手、强制前向保密的 (EC)DHE、只保留 AEAD 套件,移除静态 RSA、CBC、压缩与重协商。

加密与证书速查安全更新于 2026-10-13

TLS 1.3 是什么

TLS 1.3 是 RFC 8446 定义的现代版本,把握手压缩到一次往返:客户端在 ClientHello 里直接带上 key_share,服务端回复 ServerHello 后双方即可计算握手密钥,之后的证书与完成确认都在加密信道内传输。它强制使用前向保密的 (EC)DHE 或 PSK,只保留 AEAD 加密套件,并把静态 RSA 密钥传输、CBC、RC4、压缩与重协商全部移除。

基本信息

标准RFC 8446(2018)
握手轮次1-RTT;会话恢复可选 0-RTT
密钥交换仅 (EC)DHE 或 PSK,强制前向保密
加密算法仅 AEAD:AES-GCM、ChaCha20-Poly1305、AES-CCM
密钥派生HKDF(早期密钥、握手密钥、主密钥分层派生)
已移除项静态 RSA、CBC、RC4、压缩、重协商、自定义 DH 组
协议标识记录层版本号仍写 0x0303,需靠 supported_versions 扩展区分

典型使用场景

  • 新建站点与反向代理:默认开启 1.3,兼顾安全与首字节延迟
  • 移动端与弱网业务:少一次往返的握手对高延迟链路收益明显
  • 内部服务与网关:公共库支持好,配合 mTLS 可直接落地
  • 需要长期留存流量的场景:默认前向保密让历史会话不被私钥泄漏牵连
  • 老客户端兼容场景:与 TLS 1.2 并存配置,按客户端能力自动协商

测试与套件查看

测试与套件查看
# 指定单一 1.3 套件测试,观察协商结果
openssl s_client -connect example.com:443 -tls1_3 -ciphersuites TLS_AES_128_GCM_SHA256 </dev/null | grep -E 'Protocol|Cipher'
# 查看本机 nginx 是否带 TLS 1.3 支持(编译参数里有 TLSv1.3)
nginx -V 2>&1 | grep -o 'TLSv1.3'
# 查看 OpenSSL 版本与支持的套件划分
openssl version -a
openssl ciphers -v 'ECDHE+AESGCM' | head -5
# 观察握手消息(1.3 中 ClientHello 之后即为加密记录)
openssl s_client -connect example.com:443 -tls1_3 -msg </dev/null 2>&1 | head -40

三个标准套件

套件结构何时优先
TLS_AES_128_GCM_SHA256AES-128-GCM + SHA-256有 AES-NI 的平台,兼顾性能与强度
TLS_AES_256_GCM_SHA384AES-256-GCM + SHA-384合规要求更高强度或数据长期保护
TLS_CHACHA20_POLY1305_SHA256ChaCha20-Poly1305 + SHA-256无 AES 硬件加速的终端或移动端
0-RTT early data 允许客户端在首个包里携带业务数据,代价是存在重放风险:攻击者可以复制该数据包重复提交。只对幂等请求(查询类、静态资源)开放,写操作与支付类接口应禁用 early data。
部分老防火墙、负载均衡与 DPI 设备只认识 TLS 1.2 的明文握手结构,遇到 1.3 会挂起或误判。若线上出现「握手卡住、换 1.2 就正常」,优先怀疑中间设备,可临时启用兼容模式或升级设备。
TLS 1.3 中除 ServerHello 之外的握手消息(含证书)都已加密,抓包分析不再能看到证书明文。排障手段要改为 openssl s_client、服务端密钥日志(SSLKEYLOGFILE,仅调试环境)或应用日志。

部署与迁移要点

  • 与 TLS 1.2 并存一段时间,先统计客户端分布再决定是否收紧版本
  • 会话票据密钥要定期轮换,否则会话恢复路径会削弱前向保密的实际效果
  • 0-RTT 只对幂等接口开放,并限制 early data 的体积上限
  • 升级后回归老客户端:早期 Java 运行时、老款安卓与部分 IoT 库对 1.3 支持不完整
  • 用 openssl s_client 与在线扫描工具双向确认协商结果,不要只看配置文件
  • 监控握手失败率与密钥交换组分布,HelloRetryRequest 比例异常往往说明曲线组配置与服务端偏好不匹配
曲线组配置会直接影响延迟:服务端若只支持客户端未提供 key_share 的曲线,就会触发 HelloRetryRequest,多出一次往返,弱网下体感明显。把 X25519 与 P-256 放在优先位置并保证两端都支持,是压低 1.3 首包延迟的实用做法;反之若只保留冷门曲线,会同时损失兼容性与延迟。

易错点

  • 把 1.3 当作 1.2 的配置升级:套件字符串体系不同,1.2 的 ssl_ciphers 对 1.3 不生效,必须用 ssl_ciphers 之外的独立配置项(如 nginx 的 ssl_conf_command Ciphersuites)
  • 无节制开启 0-RTT:非幂等接口可能被重放,表现为重复下单或重复扣款,属于业务级事故
  • 升级 1.3 后未评估中间设备:老防火墙与七层代理可能丢弃握手或误报攻击行为
  • 忽略 KeyUpdate 与重协商的区别:1.3 已无重协商,抓包时把 KeyUpdate 当作异常会导致错误结论
  • 以为启用了 1.3 就无需关注 1.2 配置:客户端仍可能回落到 1.2,弱套件与静态 RSA 依然要禁

数据来源与参考

  • RFC 8446(TLS 1.3)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌