nginx 关闭低版本tls协议

昨天一早,客户联系到我,说他们源站https支持tlsv1.0 tlsv1.1 tlsv1.2,因为安全扫描的时候显示tlsv1.0和tlsv1.1存在安全风险,所以源站将tlsv1.0和tlsv1.1关闭了,但再后续扫描发现还是存在tlsv1.0开启的问题,所以联系到我问是不是cdn侧的问题。作为cdn厂商,为了兼容老的浏览器,cdn侧默认是开启了tlsv1.0等低版本的支持。确认问题后,客户要求关闭tlsv1.0。
大家都知道,nginx配置中有关于ssl_protocol的配置,所以开始我以为关闭tlsv1.0非常容易,只需要改一行配置即可。

#ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
ssl_protocols  TLSv1.2;

改完后通过curl测试发现,使用tlsv1.0还是可以正常访问的,感觉比较奇怪。

curl -vo /dev/null "https://www.example.com/client.css" --resolve www.example.com:443:203.0.113.1  --tlsv1.0 #linux
curl -vo /dev/null "https://www.example.com/client.css" --resolve www.example.com:443:203.0.113.1  --tlsv1.0 --tls-max 1.0 #mac

经过进一步分析发现,nginx配置项中的ssl_ciphers项中,如果允许了低版本的加密套件,哪怕ssl_protocols中没有允许低版本的ssl协议,nginx也会开启对低版本的支持,这就是问题所在。
通过更改ssl_ciphers,重新验证,问题修复。

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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

这里推荐一个工具,大家在配置ssl_ciphers的时候,可能不知道如何配置,可以到SSL Configuration Generator上面根据自己软件类型、版本,openssl版本,以及自己期望的安全等级在线生成建议的配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值