配置 SSL 密码套件的核心是精准保留强算法并排除已知风险,应以 TLS 1.2/1.3 为基线,仅启用支持前向保密(PFS)和 AEAD 加密(如 AES-GCM、ChaCha20-Poly1305)的套件,禁用 SSLv2/3、RC4、EXPORT、MD5、NULL、ANONYMOUS、DES/3DES、SHA1 套件,并配合 ssl_protocols、ssl_prefer_server_ciphers 等指令协同生效。

配置 ssl_ciphers 的核心不是“多开”,而是“精准保留强算法、明确排除已知风险”。安全与兼容性不矛盾,关键在于以 TLS 1.2/1.3 为基线,只启用支持前向保密(PFS)和 AEAD 认证加密(如 AES-GCM、ChaCha20-Poly1305)的套件,并按需谨慎补充旧环境必需的 CBC 套件。
优先锁定 TLS 1.2+ 的现代强套件
这些是当前主流浏览器(Chrome 70+、Firefox 63+、Safari 12+、Edge 79+)默认协商、性能好且抗攻击能力强的组合:
- ECDHE-RSA-AES128-GCM-SHA256:RSA 证书最通用选择,兼顾安全性与广泛支持
- ECDHE-RSA-AES256-GCM-SHA384:密钥更长,对金融或高敏感场景更稳妥
- ECDHE-RSA-CHACHA20-POLY1305:在移动网络、低功耗设备上延迟更低
- ECDHE-ECDSA-AES128-GCM-SHA256:若使用 ECDSA 证书,性能与安全性更优
按需补充 TLS 1.2 兼容性套件(仅限必要场景)
若服务必须支持 Windows 7 + IE11、Android 5–6 WebView 或部分嵌入式系统,可追加以下仅限 TLS 1.2 的 CBC 套件。⚠️ 注意:必须配合 ssl_protocols TLSv1.2 TLSv1.3 和 ssl_prefer_server_ciphers on 使用,且不可启用静态 RSA 套件(如 AES256-SHA)。
- ECDHE-RSA-AES128-SHA256:IE11 在 Win7/8.1 上的默认强选项
- ECDHE-RSA-AES256-SHA384:部分银行类旧系统依赖
- ECDHE-RSA-AES128-SHA:极少数遗留系统才需启用,应作为最后手段
必须彻底禁用的不安全算法
无论兼容性如何,以下类型套件存在已知漏洞或已被标准淘汰,务必从 ssl_ciphers 中显式排除:
- 所有含 SSLv2、SSLv3 的套件(POODLE、DROWN 等漏洞根源)
- 所有 RC4 相关套件(RC4-SHA、RC4-MD5),易受 Bar Mitzvah 攻击
- 所有 EXPORT 级套件(密钥不足 40 位,Sweet32 风险)
- 所有 MD5 哈希套件(
-MD5结尾)、NULL、ANONYMOUS、PSK 类无认证套件 -
DES、3DES(BEAST、Sweet32)、SHA1(仅用于签名时可接受,但
-SHA1套件整体不推荐)
配套指令不能少,否则配置可能失效
ssl_ciphers 单独设置无法生效,必须与以下指令协同:
-
ssl_protocols TLSv1.2 TLSv1.3:明确禁用 TLSv1.0/TLSv1.1(已存在严重漏洞) -
ssl_prefer_server_ciphers on:强制服务端优先采用你配置的套件顺序,防止客户端降级协商 -
ssl_ecdh_curve secp384r1:prime256v1:优化 ECDHE 性能与兼容性 -
TLS 1.3 不受
ssl_ciphers控制:其默认套件已是安全的,只需确保协议启用即可
不复杂但容易忽略。关键是把 cipher 控制当作整体安全策略的一部分,和协议版本、密钥交换、OCSP Stapling 等一起调优。











