最有效方式是将aes-gcm与chacha20-poly1305两类硬件加速aead套件置顶,剔除cbc、sha1、rc4等不合规算法,并强制服务端主导协商、限定tls 1.2+协议及优化椭圆曲线。

直接把 AES-GCM 和 ChaCha20-Poly1305 这两类能被 CPU 硬件加速的 AEAD 套件放在最前面,同时剔除所有不支持硬件加速、不满足现代安全基线的算法,是最有效的优化方式。
只留 ECDHE + AEAD 的强组合
现代加密套件必须同时满足两个硬性条件:密钥交换用 ECDHE(保障前向保密),对称加密用 AES-GCM 或 ChaCha20-Poly1305(AEAD 模式,防篡改且可硬件加速)。因此要彻底排除:
- 含 CBC 的套件(如
ECDHE-RSA-AES128-SHA)——不是“弱”,而是不合规 - 含 SHA1 或 MD5 的套件(如
ECDHE-RSA-AES256-SHA) - RC4、3DES、DHE、NULL、EXPORT 等已淘汰项
按性能与设备类型排优先级
顺序即协商优先级,Nginx 不会跳过你写的第一个去选后面的。客户端支持第一个就用它,所以要把最常用、最高效、最兼容的放最左:
-
x86/AMD 服务器为主:把
ECDHE-RSA-AES128-GCM-SHA256放首位(AES-NI 加速效果最好) -
移动端或混合后端:把
ECDHE-RSA-CHACHA20-POLY1305提前(ARM 设备更友好) -
TLS 1.3 套件前置:以
TLS13-开头的必须写在最前面,例如TLS13-AES-128-GCM-SHA256
必须同步配置三项基础指令
ssl_ciphers 单独存在等于没配。以下三项缺一不可:
-
ssl_protocols TLSv1.2 TLSv1.3;—— 明确禁用 TLS 1.0/1.1,堵死协议降级路径 -
ssl_prefer_server_ciphers on;—— 强制 Nginx 按你写的顺序选,否则客户端可自行挑最弱可用项 -
ssl_ecdh_curve secp384r1:prime256v1;—— 指定高效椭圆曲线,提升 ECDHE 性能和兼容性
验证是否真正生效
重载配置后不能只看 nginx -t,要实测协商结果:
- 用 OpenSSL 检查:
openssl s_client -connect your-domain.com:443 -tls1_2 | grep Cipher,输出应为ECDHE-RSA-AES128-GCM-SHA256类型,不能出现AES128-SHA - 确认 CPU 支持 AES-NI:
grep -m1 -o aes /proc/cpuinfo;OpenSSL 是否启用:openssl version -a | grep -i aesni - 开启 debug 日志:
error_log /var/log/nginx/error.log debug;,搜索SSL accepted cipher:查看实际协商结果











