nginx强化https安全性核心在于tls链路整体加固,需启用tlsv1.2/tlsv1.3、pfs优先加密套件、hsts强制https、ocsp stapling加速证书校验,并禁用老旧协议与弱算法。

启用现代 TLS 协议并禁用老旧版本
仅允许 TLSv1.2 和 TLSv1.3,彻底关闭已知存在漏洞的 SSLv3、TLSv1.0 和 TLSv1.1:
- ssl_protocols TLSv1.2 TLSv1.3;(必须,TLSv1.3 不支持向后兼容的弱协商)
- 避免写
TLSv1 TLSv1.1或SSLv3—— 这些会引入 BEAST、POODLE 等风险
选用前向保密(PFS)优先的加密套件
确保每次会话生成唯一密钥,即使私钥未来泄露,历史流量也无法解密:
- ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
- 优先使用
ECDHE密钥交换(非 DHE 或 RSA),搭配AES-GCM认证加密模式 - 禁用
RC4、DES、3DES、MD5、SHA1等已被淘汰算法 - ssl_prefer_server_ciphers off; —— 让客户端选择其支持的最强套件,提升兼容性与安全性平衡
强制 HSTS 防止协议降级与 HTTP 回退
告诉浏览器“今后只能用 HTTPS 访问此域名”,阻断首次访问时的明文劫持可能:
- add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
-
max-age=31536000表示一年有效期,足够长但不过度激进 -
includeSubDomains覆盖所有子域名(如 api.example.com、admin.example.com) -
preload是可选,若计划提交至浏览器 HSTS Preload List,需确保全站 100% HTTPS 就绪
启用 OCSP Stapling 加速证书状态校验
避免客户端直连 CA 查询证书吊销状态,减少延迟并防止 OCSP 响应被拦截伪造:
- ssl_stapling on;
- ssl_stapling_verify on;
- ssl_trusted_certificate /etc/letsencrypt/live/example.com/fullchain.pem;(提供完整信任链)
- 需配合
resolver指令(如resolver 8.8.8.8 1.1.1.1 valid=300s;)











