一次进行SSL检测时发现,有不少的“Cipher Suites”处于“WEAK”状态,为了让其全绿显得更安全些,遂决定修改Nginx所使用加密套件。
边缘Nginx
之前的前端节点加密套件的配置如下:
EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5
安全协议:TLSv1.2
、TLsv1.3
检查结果:
看着有几个WEAK的密码套件,经过搜索后修改为:
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305
安全协议保持不变,重新检查后的结果:
此时发现之前在安全协议去掉的TLsv1.1
还一直说支持的,在我修改了加密套件后才显示不支持。就是不知道这样算不算是“激进的”会导致旧设备不支持。
在SSL Configuration Generator网站上根据需求给出的建议配置是:
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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
但在配置上发现给出的结果与上一条相差无异,没有提供更多的兼容性。
源站Nginx
反正都改了边缘节点的安全套件,干脆一并把源站的也给修改。
修改前为:
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
修改后为:
ssl_protocols TLSv1.2 TLSv1.3; 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";
新增参数:
# 使用更安全的椭圆曲线 ssl_ecdh_curve secp384r1;
其中在直接访问源站的链路中,新增secp384r1
相关配置后,密钥交换机制从X25519
变成了P-384
。想着把secp384r1
修改成secp521r1
是不是更安全?没想到修改后Chrome浏览器直接无法访问(使用了不受支持的协议,ERR_SSL_VERSION_OR_CIPHER_MISMATCH,客户端和服务器不支持一般 SSL 协议版本或加密套件。),但通过自建的边缘Nginx或者是CDN后还能正常访问。
最后
最后糅合一下给边缘节点配置为:
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
至于CDN节点就无法详细的进一步配置了,源站节点甚至可以配置成只支持TLSv1.3的说!
参考
SSL Configuration Generator
https://ssl-config.mozilla.org/
在Nginx中启用安全的SSL/TLS密码套件,涵盖基础配置、兼容性处理、证书管理、性能优化等内容
https://www.zhifeiya.cn/post/2025/5/1/9afa68f2
ChiuYut
2025年07月19日