首页/安全/加密与证书速查/密码套件命名与解读
TLS 与 HTTPS60 条

密码套件命名与解读

TLS 1.2 套件名按「密钥交换 + 认证 + 加密算法 + 模式 + PRF」组合命名(如 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256);TLS 1.3 套件名只保留算法部分。

加密与证书速查安全更新于 2026-10-13

密码套件是什么

密码套件(cipher suite)是一组算法的命名组合,决定握手阶段用什么做密钥交换与认证、传输阶段用什么做加密。TLS 1.2 的名字把「密钥交换 + 认证 + 加密算法 + 模式 + PRF」全写出来,TLS 1.3 则只保留算法、模式与哈希,密钥交换改由扩展协商。读懂命名是判断配置是否安全的第一步。

基本信息

TLS 1.2 结构TLS_[密钥交换]_[认证]_WITH_[加密]_[模式]_[PRF]
TLS 1.2 示例TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:临时 ECDH 协商 + RSA 证书签名 + AES-128-GCM + SHA-256
TLS 1.3 结构TLS_[加密]_[模式]_[哈希],如 TLS_AES_256_GCM_SHA384
必须禁用NULL、匿名(ADH/AECDH)、EXPORT、RC4、3DES
尽量避免CBC 类模式、静态 RSA 密钥传输、SHA-1
查看工具openssl ciphers -v 与 openssl s_client 实际协商结果

典型使用场景

  • 配置评审:判断一串配置里是否混入了弱套件
  • 扫描结果解读:把扫描工具报出的套件名还原成具体算法组合
  • 故障排查:握手失败时确认两端可用套件的交集是否为空
  • 合规整改:按基线要求收敛到 ECDHE + AEAD 组合
  • 版本迁移:理解 1.2 与 1.3 套件结构差异,避免把 1.2 名单套用到 1.3

查询与解读套件

查询与解读套件
# 列出本机 OpenSSL 支持的 ECDHE + AESGCM 套件及含义
openssl ciphers -v 'ECDHE+AESGCM' | head -10
# 统计可用套件总数,评估是否需要收口
openssl ciphers -v 'HIGH:!aNULL' | wc -l
# 查看某个套件的完整属性(密钥交换、认证、加密、强度)
openssl ciphers -v 'ECDHE-RSA-AES128-GCM-SHA256'
# 确认服务端实际协商结果,验证配置是否生效
openssl s_client -connect example.com:443 -tls1_2 </dev/null 2>/dev/null | grep 'Cipher'

命名逐段读法

片段含义常见误读
ECDHE临时椭圆曲线密钥交换,提供前向保密误读为证书算法
RSA / ECDSA证书签名算法,即认证方式误读为密钥交换方式
AES_128 / AES_256对称加密算法与密钥长度误以为越长越安全,忽略模式
GCM / CBC工作模式,决定是否自带完整性忽略 CBC 无认证的属性
SHA256 / SHA384PRF 或哈希算法与签名摘要混为一谈
套件里的认证部分(RSA 或 ECDSA)指的是证书类型,与密钥交换分离:ECDHE_RSA 表示临时 ECDH 协商密钥、用 RSA 证书做签名认证。确保套件与证书类型匹配,否则会出现协商失败或客户端回退。
套件字符串的语法在不同软件中不同:nginx/OpenSSL 用冒号分隔的表达式,Java 用标准套件名列表,Windows 还有自己的注册表项。迁移配置时要按目标平台重写,直接复制往往导致配置无效或服务启动失败。

易错点

  • 把 ECDHE_RSA 误读为 RSA 密钥交换:密钥交换其实是临时 ECDH,误判会影响对前向保密的判断
  • 在不同平台间直接复制套件字符串:语法不兼容,配置不生效甚至报错,需要按平台重写
  • 忽略套件与证书类型的匹配:ECDSA 套件配 RSA 证书会协商失败,反之亦然
  • 只看加密算法忽略模式:AES 后面跟 CBC 就没有完整性保护,需要与 GCM 区分对待
  • 认为条数越多越安全:可用套件越多,弱组合被协商到的概率越大,应收敛到明确白名单

数据来源与参考

  • RFC 5246 附录(套件定义)
  • OpenSSL 官方文档 openssl-ciphers(1)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌