1.3 套件被简化了
TLS 1.2 的套件名把密钥交换、认证、加密、散列全串在一起;TLS 1.3 把它们拆开:套件只描述 AEAD 加密算法与 HKDF 使用的散列,密钥交换(如 X25519)与认证方式改由握手扩展协商。因此 1.3 只有五个标准套件,配置界面也更简单,但不同软件里参数名并不统一。
基本信息
| 标准套件数 | 五个:三个必须实现的 AEAD 套件加两个 CCM 相关套件 |
|---|---|
| 命名组成 | TLS_ 前缀加加密算法加散列,不再包含密钥交换与签名 |
| 协商方式 | supported_groups 扩展决定曲线,signature_algorithms 决定签名算法 |
| 配置差异 | Nginx 用 ssl_conf_command Ciphersuites,OpenSSL 命令行用 -ciphersuites |
五个套件
| 套件 | 底层算法 | 典型选用 |
|---|---|---|
| TLS_AES_128_GCM_SHA256 | AES-128-GCM | 默认首选,有 AES-NI 时性能好 |
| TLS_AES_256_GCM_SHA384 | AES-256-GCM | 高安全或合规要求场景 |
| TLS_CHACHA20_POLY1305_SHA256 | ChaCha20-Poly1305 | 无 AES 硬件加速的移动端 |
| TLS_AES_128_CCM_SHA256 | AES-128-CCM | 物联网等受限环境,较少用 |
| TLS_AES_128_CCM_8_SHA256 | AES-128-CCM-8 | 标签仅 8 字节,安全性较弱,慎用 |
查看与指定套件
查看与指定套件
openssl ciphers -v -s -tls1_3 # 列出本机 OpenSSL 支持的 1.3 套件
openssl s_client -tls1_3 -ciphersuites TLS_AES_128_GCM_SHA256 -connect example.com:443 </dev/null | grep -E 'Protocol|Cipher'
# Nginx 侧:1.3 套件要用 Ciphersuites 参数,不能用 ssl_ciphers
# ssl_conf_command Ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;典型使用场景
- 安全基线要求只启用 TLS 1.3 时,确认套件配置是否被正确解析
- 移动端为主的业务:为无 AES 加速的设备保留 ChaCha20 套件
- 排查握手失败:确认客户端与服务器在曲线与签名算法上是否有交集
- 性能对比:对比 AES-GCM 与 ChaCha20 在不同平台上的吞吐差异
1.3 的 CCM 套件标签较短(尤其 CCM_8 只有 8 字节认证标签),通常只在受限设备上使用;通用服务端保留 GCM 与 ChaCha20 三件套就能覆盖绝大多数客户端。
1.3 握手在 ServerHello 之后的内容全部加密,用抓包工具看不到证书与套件明文,排查时需要用 openssl s_client 或带密钥日志的解密配置。
只启用 1.3 会让仅支持 1.2 的老客户端直接失败:过渡期保留 1.2 并观察客户端版本分布,确认无影响后再收窄,比一次性切换稳妥。