Nginx HTTPS真正安全需严格配置ssl_ciphers仅保留ECDHE+AEAD套件(如ECDHE-RSA-AES128-GCM-SHA256、CHACHA20-POLY1305),禁用RSA/DHE密钥交换、CBC模式、RC4/3DES/SHA1等弱算法,并配合ssl_protocols TLSv1.2 TLSv1.3和ssl_prefer_server_ciphers on实现PFS与AEAD强制协商。

要让Nginx的HTTPS真正安全,光有证书远远不够——密码套件(ssl_ciphers)才是决定加密质量的核心。它直接控制客户端和服务器协商时“能用哪些加密方式”,错误配置可能引入弱算法、禁用前向保密,甚至被等保、金融合规一票否决。
只保留现代强套件,剔除所有已知风险算法
必须明确排除以下不安全组件:
- 禁用所有非ECDHE密钥交换:去掉
RSA、DHE(无PFS)、PSK等 - 禁用CBC模式套件:
-CBC结尾的如AES128-CBC-SHA易受BEAST、Lucky13攻击 - 禁用RC4、3DES、MD5、SHA1、NULL、EXPORT等已被标准弃用的算法
- 避免使用模糊通配符如
HIGH、MEDIUM或!aNULL,它们无法保证前向保密(PFS)
优先选用AEAD模式+前向保密组合
当前最稳妥的套件结构是ECDHE + AES-GCM或CHACHA20-POLY1305,两者都满足AEAD(认证加密带关联数据)和PFS要求:
-
ECDHE-ECDSA-AES128-GCM-SHA256:适合ECDSA证书,轻量高效 -
ECDHE-RSA-AES128-GCM-SHA256:兼容性最广,主流RSA证书首选 -
ECDHE-RSA-AES256-GCM-SHA384:更高密钥强度,适合高敏感场景 -
ECDHE-RSA-CHACHA20-POLY1305:在移动弱网下性能更优,Chrome/Firefox默认倾向
注意:TLSv1.3已自动禁用所有非AEAD套件,但Nginx仍需在ssl_ciphers中显式限定,防止TLSv1.2降级时启用弱套件。
配合关键参数形成闭环防护
密码套件不是孤立配置,必须与以下指令协同生效:
-
ssl_protocols TLSv1.2 TLSv1.3;:彻底禁用TLSv1.0/1.1(PCI DSS及等保2.0强制要求) -
ssl_prefer_server_ciphers on;:确保服务器按你设定的优先级选择套件,而非听从客户端 -
ssl_ecdh_curve secp384r1:prime256v1;:指定ECC曲线,避免老旧客户端协商到弱曲线
推荐可直接落地的配置示例(2026年通用合规版)
适用于政务、金融、等保三级及以上系统,兼顾安全性与主流设备兼容性:
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305';该配置不含任何CBC、SHA1、RC4或非ECDHE项,全部支持前向保密与AEAD,且覆盖iOS 12+/Android 7+/Chrome 56+/Firefox 52+等主流环境。


















