首页/网络/协议速查/TLS 1.3 握手流程与 0-RTT

TLS 1.3 握手流程与 0-RTT

1-RTT 完成握手:ClientHello 直接带 key_share,服务器一回就能推出会话密钥;会话复用支持 0-RTT 提前发送数据(有重放风险)。

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

TLS 1.3 握手快在哪

TLS 1.3 把完整握手压缩到一次往返:客户端在 ClientHello 里直接带上 key_share(预生成的密钥交换公钥),服务器回一条 ServerHello 就能推出会话密钥,此后所有握手消息都在加密通道里传输。会话恢复还能做到 0-RTT,在第一个包里就发应用数据,代价是这部分数据不具前向保密且可被重放。

基本信息

往返次数首次连接 1-RTT,会话恢复可 0-RTT
关键扩展supported_versions、key_share、pre_shared_key、early_data
加密范围ServerHello 之后的所有握手消息均加密
规范RFC 8446
支持情况取决于 OpenSSL/BoringSSL/NSS 版本,服务端与客户端都要支持

1-RTT 骨架

1-RTT 骨架
Client -> Server: ClientHello + key_share (+ early_data)
Server -> Client: ServerHello + key_share
                 {EncryptedExtensions, Certificate, CertificateVerify, Finished}
Client -> Server: {Finished}
# 花括号内的消息在握手密钥下加密,中间设备只能看到版本与长度

观察握手

观察握手
openssl s_client -connect example.com:443 -tls1_3 -msg </dev/null 2>&1 | head -20
openssl s_client -connect example.com:443 -brief </dev/null      # 快速确认是否协商到 1.3
tcpdump -nn -s0 -A 'tcp port 443' -c 20 | grep -i key_share      # 在 ClientHello 里找 key_share

与 1.2 的关键差异

项目TLS 1.3TLS 1.2
往返1-RTT,恢复可 0-RTT2-RTT
密钥交换只允许 (EC)DHE,参数随 Hello 一起发可用 RSA 密钥传输,无前向保密
加密范围ServerHello 之后全部加密证书等消息明文可见
密码套件只保留 AEAD,去掉 CBC 与静态 RSA包含 CBC 与静态 RSA 套件
重协商移除,改用密钥更新支持重新协商

典型使用场景

  • 移动端弱网:少一个往返对首包延迟改善明显
  • 高并发网关:1.3 的握手开销与 CPU 占用低于 1.2
  • 会话恢复频繁的站点,用 0-RTT 让回头客直接发数据
  • 需要隐藏证书信息的场景:1.3 让中间设备看不到证书内容
  • 合规审计:确认服务端已禁用弱套件与旧版本
0-RTT 数据可被复制重放且没有前向保密;只应对幂等请求开放,登录、下单等写操作必须在完整握手后发送。

服务端开启检查

  • 确认软件版本支持 1.3:OpenSSL 1.1.1 起、nginx 1.13.0 起
  • ssl_protocols 同时保留 TLSv1.2 与 TLSv1.3,避免老客户端整体不可用
  • 1.2 的套件用 ssl_ciphers 配,1.3 的套件用 ssl_ciphersuites 配,两者互不影响
  • 按需开启会话票据以支持快速恢复,同时评估票据密钥的轮换与保护

易错点

  • 基于明文的中间设备误判 1.3 流量为 1.2(ServerHello 之后全加密),导致按版本做的路由与审计规则失效
  • 给登录、支付等写接口开启 0-RTT,重放攻击可造成重复提交与重复扣款
  • 以为升到 1.3 就不用配套件:1.3 的套件由 ciphersuites 控制,在 nginx/OpenSSL 里用错选项完全不生效
  • 中间设备不支持 1.3 扩展时连接被重置,表现为「部分客户端握手失败」,需要抓 ClientHello 定位

数据来源与参考

  • RFC 8446 §2(握手概览)
  • RFC 8446 §8(0-RTT 安全考虑)

相关工具

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