配置ssl_ciphers的核心是精准保留强算法、明确排除已知风险,应以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 或部分 Java 7/8 客户端,可追加以下仅限 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 上的默认强选项,SHA256 哈希满足等保三级与 PCI-DSS 要求
- ECDHE-RSA-AES256-SHA384:部分银行类或政务旧系统依赖
- ECDHE-RSA-AES128-SHA:仅极少数遗留系统才需启用,SHA1 不推荐,应作为最后手段
必须彻底禁用的不安全算法
无论兼容性如何,以下类型套件存在已知漏洞或已被标准淘汰,务必从 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(-SHA 结尾套件整体不推荐,仅签名阶段 SHA1 可接受)
配套指令协同生效,缺一不可
ssl_ciphers 单独设置无法生效,必须与以下指令协同配置:
-
ssl_protocols TLSv1.2 TLSv1.3:明确禁用 TLSv1.0/TLSv1.1(已存在严重漏洞,PCI-DSS 与等保三级刚性要求) -
ssl_prefer_server_ciphers on:强制服务端优先采用你配置的套件顺序,防止客户端降级协商 -
ssl_ecdh_curve secp256r1:secp384r1:指定强椭圆曲线,避免协商 fallback 到 weak curve;secp256r1 是 IE11 和多数嵌入式设备唯一支持的曲线


















