nginx tls优化需围绕加密强度、协议行为、证书验证和响应控制四维度系统性加固。禁用tls 1.0/1.1及3des、rc4等弱算法;仅启用tlsv1.2+,优先ecdhe+aes-gcm/chacha20;强制前向保密;补全证书链并启用ocsp stapling;配置hsts等安全响应头。

禁用老旧协议与弱加密套件(直击 CVE-2016-2183 等)
等保、PCI DSS、SSLLabs 扫描都会明确标记 TLS 1.0/1.1 和 3DES、RC4、MD5、EXPORT 类算法为高危项。
- 必须显式声明仅启用安全协议:
ssl_protocols TLSv1.2 TLSv1.3;,禁止写成TLSv1 TLSv1.1 TLSv1.2这类模糊配置 - 密码套件要彻底排除 64 位分组算法:移除所有含
3DES、DES、RC4、MD5的套件;优先使用 ECDHE + AES-GCM 或 ChaCha20-Poly1305 - 推荐配置片段:
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK';
启用前向保密与现代密钥交换
没有 PFS(前向保密),一旦私钥泄露,历史通信全可解密——这是等保三级明确要求规避的风险。
- 确保密钥交换算法全部基于 ECDHE 或 DHE,禁用静态 RSA 密钥交换
- 椭圆曲线建议指定高强度参数:
ssl_ecdh_curve secp384r1:x25519;(x25519 更优,需 OpenSSL 1.1.1+) - 配合
ssl_prefer_server_ciphers on;,强制服务端主导套件选择权,避免客户端协商出弱算法
补全证书链与 OCSP Stapling 验证
证书链不完整或吊销状态无法快速验证,会导致浏览器信任失败、HSTS 生效异常,也是 Mozilla Observatory 扣分主因。
- 用
ssl_trusted_certificate显式指定 CA 根证书路径,不能只靠系统默认信任库 - 开启 stapling 并强制校验:
ssl_stapling on; ssl_stapling_verify on; - 配置独立 DNS 解析器(如
resolver 8.8.8.8 1.1.1.1 valid=300s;),避免因系统 DNS 故障导致 stapling 失效
强化响应头与传输策略
HTTPS 本身不防 XSS、点击劫持或 MIME 嗅探。合规扫描(如 securityheaders.com)会直接检测这些头部缺失。
- HSTS 必须启用且含子域:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; - 补充基础防护头:
add_header X-Content-Type-Options "nosniff" always;<br> add_header X-Frame-Options "DENY" always;<br> add_header X-XSS-Protection "1; mode=block" always;<br> add_header Referrer-Policy "no-referrer-when-downgrade" always;
- 所有安全头建议加
always参数,确保重定向、错误页等场景也生效











