在配置 TLS/SSL 时,我们经常看到类似 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 这样的密码套件名称。对于初学者来说,这串字符可能令人困惑。本文将详细解析 TLS 密码套件的命名规范,帮助你理解每个部分的含义。
什么是密码套件
密码套件(Cipher Suite)是 TLS 协议的核心组件,它定义了一整套加密算法组合,包括:
- 密钥交换算法
- 身份认证算法
- 加密算法
- 哈希算法
一个密码套件决定了 TLS 握手期间如何协商安全参数,以及如何加密传输的数据。
TLS 1.2 密码套件命名格式
TLS 1.2 采用以下命名格式:
|
|
以 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 为例:
| 组成部分 | 含义 |
|---|---|
| TLS | 协议名称 |
| ECDHE | 密钥交换算法(Elliptic Curve Diffie-Hellman Ephemeral) |
| RSA | 身份认证算法 |
| AES_256_GCM | 加密算法(AES,256位,GCM模式) |
| SHA384 | 哈希算法 |
各组件详解
密钥交换算法(Key Exchange)
ECDHE:椭圆曲线临时 Diffie-Hellman(推荐,前向安全)DHE:临时 Diffie-Hellman(传统但性能较低)RSA:基于 RSA 的密钥交换(已被废弃,不提供前向安全)ECDH:椭圆曲线 Diffie-Hellman(静态)
认证算法(Authentication)
RSA:RSA 公钥证书ECDSA:椭圆曲线数字签名算法DSS:数字签名标准(较老)
加密算法(Cipher)
AES_256_GCM:AES 加密,256位密钥,GCM 模式(推荐)CHACHA20-POLY1305:Google 开发的流密码(移动设备友好)AES_128_CCM:AES 加密,128位密钥,CCM 模式ARIA256-GCM:韩国标准加密算法
哈希算法(MAC/Hash)
SHA384:SHA-2 哈希,输出384位SHA256:SHA-2 哈希,输出256位MD5:已废弃,不推荐使用SHA1:已废弃,不推荐使用
TLS 1.3 密码套件命名格式
TLS 1.3 大幅简化了密码套件设计,仅保留加密算法和哈希算法:
|
|
常见的 TLS 1.3 密码套件:
| 密码套件 | 加密算法 | 哈希算法 |
|---|---|---|
| TLS_AES_256_GCM_SHA384 | AES GCM (256位) | SHA-384 |
| TLS_CHACHA20_POLY1305_SHA256 | ChaCha20-Poly1305 | SHA-256 |
| TLS_AES_128_GCM_SHA256 | AES GCM (128位) | SHA-256 |
TLS 1.3 移除了静态 RSA 和 DH 密钥交换,强制使用前向安全的临时密钥交换(ECDHE/DHE)。这意味着所有 TLS 1.3 连接都提供前向安全保护。
对比 TLS 1.2 和 TLS 1.3 密码套件
|
|
查看支持的密码套件
使用 OpenSSL 查看系统支持的密码套件:
|
|
输出示例:
|
|
字段说明:
TLSv1.3:协议版本Kx=ECDH:密钥交换类型Au=RSA:认证算法Enc=AESGCM(256):加密算法Mac=AEAD:消息认证码类型(AEAD = 认证加密)
实际应用:解析密码套件
让我们通过一个实际连接来查看密码套件协商结果:
|
|
示例输出:
|
|
配置建议
推荐配置(TLS 1.3 优先):
|
|
强制高安全性(仅 TLS 1.3):
|
|
兼容旧系统(TLS 1.2 最低要求):
|
|
总结
理解密码套件命名规范对于配置安全的 TLS 连接至关重要:
- TLS 1.2:采用
TLS_KeyExch_Auth_Cipher_Hash格式,组件较多 - TLS 1.3:采用
TLS_Cipher_Hash格式,更简洁,安全性更高 - 生产环境应优先使用 TLS 1.3 和提供前向安全的密码套件
- 避免使用已知不安全的算法(如 3DES、RC4、SHA1)