直接依据扫描报告中“不合规套件”名称,比照 OpenSSL 命名规则逐项剔除:ECDHE/DHE(密钥交换)可保留,RSA/ECDSA(签名)按证书类型选,AES-GCM/CHACHA20(对称加密)安全,AES-CBC/RC4/3DES/MD5/SHA1 必须禁用;再按 BEAST、POODLE(删所有 CBC)、Sweet32(删 3DES)、Logjam(删 DHE 或升级 DH 参数)、RC4/EXPORT/NULL 等漏洞类型批量过滤;配置须同步设置 ssl_protocols TLSv1.2 TLSv1.3、ssl_prefer_server_ciphers off,并用 nginx -t 与 openssl s_client 验证生效;旧客户端兼容仅限临时例外,如 IE11 可酌情保留 ECDHE-RSA-AES128-SHA256,但须记录并限期升级。

直接看扫描报告里的“不合规套件”名称,比照 OpenSSL 套件命名规则逐项剔除,比盲目套用通用配置更准、更稳。
先读懂扫描结果里那些套件名的含义
安全扫描工具(如 Qualys SSL Labs、Nmap + ssl-enum-ciphers)报出的不合规套件,例如 ECDHE-RSA-AES256-SHA、AES128-SHA、DHE-RSA-AES128-SHA,每个字段都对应一个密码学组件:
- ECDHE / DHE:密钥交换方式 → 支持前向保密,这部分可保留
- RSA / ECDSA:签名算法 → RSA 普适,ECDSA 更高效(需配 EC 证书)
- AES128 / AES256 / RC4 / 3DES:对称加密算法 → AES128-GCM、AES256-GCM、CHACHA20-POLY1305 安全;AES-CBC、RC4、3DES 必须删
- SHA / SHA256 / SHA384 / MD5:PRF 或 HMAC 签名哈希 → 含 MD5、SHA1(即 -SHA)的套件一律禁用;-SHA256 和 -SHA384 可接受
所以看到 ECDHE-RSA-AES256-SHA,重点在末尾的 -SHA —— 它用的是 SHA1 哈希,已不满足 PCI DSS/NIST 要求,必须移除。
按漏洞类型批量过滤,不是靠猜
扫描报告常归类为“BEAST”“POODLE”“Sweet32”“Logjam”等,每类对应明确的算法缺陷,可针对性排除:
-
BEAST / POODLE 风险:所有 CBC 模式套件(如
-AES128-SHA、-AES256-SHA、-CAMELLIA128-SHA),除非业务强依赖 IE11/Win7 且无法升级,否则全部删除 -
Sweet32 风险:所有 64 位分组密码,典型是
3DES-EDE-CBC(即DES-CBC3-SHA),必须清除 -
Logjam 风险:所有使用 弱 DH 参数 的套件,如
DHE-RSA-AES128-SHA(若未配 2048+ 位 DH group)→ 更稳妥做法是直接去掉所有DHE套件,只留ECDHE -
RC4 / EXPORT / NULL 类:直接全局禁用,无需犹豫 ——
!RC4:!EXPORT:!NULL:!aNULL:!eNULL
配置写法要防“形同虚设”
只写 ssl_ciphers 不够,很多问题出在协同指令没跟上:
-
ssl_protocols TLSv1.2 TLSv1.3;—— 必须显式禁用 TLSv1.0/TLSv1.1,否则扫描仍会标红 -
ssl_prefer_server_ciphers off;—— 现代客户端协商能力更强,设为off反而更安全(避免服务端强制低优先级套件) - 不加引号或空格错误会导致 Nginx 解析失败,正确写法:
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305"; - 修改后务必执行
sudo nginx -t && sudo systemctl reload nginx,再用openssl s_client -connect your.site:443 -tls1_2手动验证是否真生效
兼容旧客户端时的折中策略
若扫描对象含 Windows 7 + IE11、Android 5.x App 或 Java 7u80 客户端,不能一刀切:
- 仅对这类场景,可保留
ECDHE-RSA-AES128-SHA256(SHA256 安全)和ECDHE-RSA-AES128-SHA(SHA1 不安全,但 IE11 Win7 无更好选择) - 同时必须加
ssl_prefer_server_ciphers on;+ 严格限制ssl_protocols TLSv1.1 TLSv1.2;,把风险控制在最小范围 - 记录这些例外,并设定半年内推动客户端升级计划 —— 这类兼容性不是长期方案,而是临时过渡


















