pci-dss合规需彻底禁用rc4、3des/des、sha1/md5、export、null/anonymous/psk及cbc套件,仅保留ecdhe+aes-gcm/chacha20-poly1305+sha256+的强套件,并配合tlsv1.2+、server ciphers优先、secp384r1曲线等指令。

要让 Nginx 的 ssl_ciphers 配置通过 PCI-DSS 合规扫描,关键不是堆砌“看起来强”的套件列表,而是严格剔除所有被明确禁止的算法组件,并确保与协议版本、密钥交换机制协同生效。
必须从 ssl_ciphers 中彻底删除的套件类型
只要套件名称中包含以下任意关键词,就属于 PCI-DSS 禁用范围,应直接移除:
-
RC4(如
RC4-SHA)——易受 Bar Mitzvah 攻击,已全面禁用 -
3DES 或 DES(如
DES-CBC-SHA、3DES-EDE-CBC-SHA)——密钥强度不足,存在 Sweet32 碰撞风险 -
MD5 或 SHA1(即末尾为
-SHA的套件,如ECDHE-RSA-AES128-SHA)——哈希算法不再满足 NIST 和 PCI-DSS 要求 -
EXPORT(如
EXP-EDH-RSA-DES-CBC-SHA)——强制使用短密钥,等同于后门 -
NULL、ANONYMOUS、PSK 类套件(如
RSA-AES256-SHA)——无认证或不支持前向保密(PFS) -
CBC 模式套件(如
AES128-SHA、CAMELLIA128-SHA)——易受 BEAST/POODLE 攻击,除非强依赖 IE11/Win7 且无法升级,否则全部删除
推荐使用的强加密套件组合
PCI-DSS 要求必须启用前向保密(PFS)和 AEAD 认证加密模式。以下配置经实际扫描验证通过,兼顾安全性与主流客户端兼容性:
-
ECDHE-ECDSA-AES256-GCM-SHA384—— 配 EC 证书时优先选用 -
ECDHE-RSA-AES256-GCM-SHA384—— RSA 证书通用主力套件 -
ECDHE-RSA-AES128-GCM-SHA256—— 兼容性更广,适合多数场景 -
ECDHE-ECDSA-CHACHA20-POLY1305—— 移动端优化,低延迟高安全性
所有套件必须含 ECDHE(非 RSA 密钥交换),对称加密部分必须是 AES-GCM 或 CHACHA20-POLY1305,哈希必须为 SHA256 或更高。
配套 TLS 指令不可遗漏
仅修改 ssl_ciphers 不足以通过扫描,必须同步配置以下指令:
-
ssl_protocols TLSv1.2 TLSv1.3;—— 显式禁用 TLSv1.0 和 TLSv1.1(PCI-DSS 自 2018 年起强制要求) -
ssl_prefer_server_ciphers on;—— 防止客户端强制协商降级到弱套件 -
ssl_ecdh_curve secp384r1;—— 明确指定强椭圆曲线,避免协商 fallback 到 weak curve -
ssl_dhparam /path/to/dhparam.pem;—— 若保留 DHE(不推荐),必须提供 ≥2048 位 DH 参数;建议直接弃用 DHE,只留 ECDHE
验证配置是否真正生效
上线后不能只信后台日志,需主动验证:
- 用命令
openssl s_client -connect yoursite.com:443 -tls1_2查看实际协商出的套件,确认无禁用项 - 提交至 SSL Labs 或 MySSL,在 “Handshake Simulation” 中检查 IE11/Win7 以外所有现代客户端是否均未回退到 CBC、SHA1 或 TLSv1.1
- 本地运行
nginx -t校验语法,再执行nginx -s reload生效











