TLS 1.3 (传输层安全协议 1.3)
定义
TLS 1.3 是当前最新的传输层安全协议版本(2018 年的 RFC 8446,现行规范为 RFC 9846),完整握手只需一个往返,且只保留 AEAD 加密算法。
TLS 1.3 是最新的 TLS 版本,最早于 2018 年 8 月以 RFC 8446 发布;2026 年 7 月的 RFC 9846 成为现行规范,同时废止了 RFC 8446 和 RFC 5246。它不是小修小补而是重新设计:去掉了静态 RSA 和静态 DH 密钥交换,完整握手一律使用临时 (EC)DHE;删除了 CBC、RC4、3DES、压缩和重协商;ServerHello 之后的内容(包括服务器证书)全部加密。密码套件只剩五个,全部是 AEAD。
为什么重要
TLS 1.3 的完整握手从两个往返减少到一个,恢复会话时还能用 0-RTT 提前发送数据。弱选项从协议里直接消失,配置出错的空间小了很多,完整握手默认具备前向保密。新特性也都建立在它之上:Chrome 从 131 版起使用的后量子混合密钥交换 X25519MLKEM768,以及加密 ClientHello(ECH),都只在 TLS 1.3 中可用。国内主流云厂商的 CDN、负载均衡也普遍提供 TLS 1.3 开关。
例子
测试服务器是否支持 TLS 1.3,并在 Nginx 中指定 TLS 1.3 套件(需要 OpenSSL 1.1.1 及以上):
openssl s_client -connect example.com:443 -tls1_3
ssl_protocols TLSv1.2 TLSv1.3;
ssl_conf_command Ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;
常见误区
- TLS 1.3 需要专门的证书。 现有的 RSA、ECDSA 证书都能直接使用,能否启用取决于服务器的 TLS 库和配置。
- 0-RTT 是白送的提速。 早期数据可能被攻击者重放,只适合幂等请求。
- 用了 TLS 1.3,别人就看不到我访问哪个网站。 除非启用 ECH,ClientHello 中的 SNI 域名仍是明文。