# TLS 1.3（传输层安全协议 1.3）是什么？

> TLS 1.3 是当前最新的传输层安全协议版本（2018 年的 RFC 8446，现行规范为 RFC 9846），完整握手只需一个往返，且只保留 AEAD 加密算法。

Source: https://ssl.sh/zh/glossary/tls-1-3/
Last updated: 2026-11-10

TLS 1.3 是最新的 TLS 版本，最早于 2018 年 8 月以 [RFC 8446](https://www.rfc-editor.org/rfc/rfc8446) 发布；2026 年 7 月的 [RFC 9846](https://www.rfc-editor.org/rfc/rfc9846) 成为现行规范，同时废止了 RFC 8446 和 RFC 5246。它不是小修小补而是重新设计：去掉了静态 RSA 和静态 DH 密钥交换，完整握手一律使用临时 (EC)DHE；删除了 CBC、RC4、3DES、压缩和重协商；ServerHello 之后的内容（包括服务器证书）全部加密。密码套件只剩五个，全部是 [AEAD](https://ssl.sh/zh/glossary/aead/)。

## 为什么重要
TLS 1.3 的完整握手从两个往返减少到一个，恢复会话时还能用 [0-RTT](https://ssl.sh/zh/glossary/0-rtt/) 提前发送数据。弱选项从协议里直接消失，配置出错的空间小了很多，完整握手默认具备[前向保密](https://ssl.sh/zh/glossary/forward-secrecy/)。新特性也都建立在它之上：Chrome 从 131 版起使用的后量子混合密钥交换 X25519MLKEM768，以及加密 ClientHello（ECH），都只在 TLS 1.3 中可用。国内主流云厂商的 CDN、负载均衡也普遍提供 TLS 1.3 开关。

## 例子
测试服务器是否支持 TLS 1.3，并在 Nginx 中指定 TLS 1.3 套件（需要 OpenSSL 1.1.1 及以上）：

```bash
openssl s_client -connect example.com:443 -tls1_3
```

```nginx
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](https://ssl.sh/zh/glossary/ech/)，ClientHello 中的 SNI 域名仍是明文。

## 相关术语

- [TLS 1.2](https://ssl.sh/zh/glossary/tls-1-2/): TLS 1.2 是 2008 年由 RFC 5246 定义的 TLS 版本，引入了基于 SHA-256 的密钥派生和 AES-GCM 等 AEAD 加密算法，至今仍被广泛使用。
- [TLS 握手](https://ssl.sh/zh/glossary/tls-handshake/): TLS 握手是 TLS 连接开始时的一组消息交换，客户端与服务器在其中协商协议版本和密码套件、验证服务器身份并派生会话密钥。
- [AEAD](https://ssl.sh/zh/glossary/aead/): AEAD 是带关联数据的认证加密算法，一次运算同时完成数据加密和完整性认证，并能保护不加密的附加数据不被篡改。
- [前向保密](https://ssl.sh/zh/glossary/forward-secrecy/): 前向保密是密钥交换的一种安全属性：即使服务器的长期私钥日后泄露，过去连接的会话密钥也不会因此暴露。
- [0-RTT](https://ssl.sh/zh/glossary/0-rtt/): 0-RTT 是 TLS 1.3 和 QUIC 的特性，允许回访的客户端用上一次会话留下的密钥，在第一个数据包里就发送应用数据。
- [PSK](https://ssl.sh/zh/glossary/psk/): PSK（预共享密钥）是 TLS 双方在握手前就已共同持有的秘密，用于会话恢复，或在不使用证书的情况下完成身份认证。
- [ECH](https://ssl.sh/zh/glossary/ech/): ECH 是 TLS 1.3 的扩展，用发布在 DNS 中的公钥加密 ClientHello 的敏感部分（包括 SNI），链路上只能看到前端服务器的公共名称。
- [X25519MLKEM768](https://ssl.sh/zh/glossary/x25519mlkem768/): X25519MLKEM768 是把经典的 X25519 与后量子算法 ML-KEM-768 组合起来的 TLS 1.3 混合密钥交换群，Chrome 从 131 版起使用。
