在Ubuntu/Nginx上禁用TLS 1.0,1.1启用TLS 1.3

更新了网站服务器后,偶然发现我的网站的SSL安全评级已经降到了B级,当初的王者现在变白银了。 主要原因是Nginx默认支持TLS1.0,1.1,而并不支持TLS1.3。如果你的Nginx也仍支持TLSv1.0, v1.1那你的网站在https://www.ssllabs.com/ssltest/index.html 上的安全评价最多就是B级。

为了一个好看的评分(对个人小众网站的确仅此而已),我禁用了Nginx里的TLS 1.0 和 1.1并启用TLS 1.3。

我修改了Ubuntu上的2个不同的配置文件,你也许要修改3个

/etc/nginx/nginx.conf
/etc/letsencrypt/options-ssl-nginx.(我的网站使用了Certbot / Let’s Encrypt)

你也许还要检查这第三个配置文件
/etc/nginx/sites-available/xxx.com (或/default)

第一步:修改nginx.conf
首先,备份nginx.conf配置文件。

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.backup

然后编辑这个配置文件。

sudo vi /etc/nginx/nginx.conf

在http { }块中寻找下面这行。

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #放弃SSLv3, ref: POODLE

删除TLSv1 TLSv1.1。添加TLSv1.3,现在这行应该是这样的。

ssl_protocols TLSv1.2 TLSv1.3;

保存, 退出。
检查Nginx配置是否有效

sudo nginx -t

重新加载Nginx

sudo service nginx reload

现在可以通过https://www.ssllabs.com/ssltest/index.html 检查你的主机上TLS 1.0和1.1是否已经被禁用了。在不少情况下,上面的步骤可能已经足够了,但如果发现TLS 1.0和1.1仍然没有被禁用呢?(比如我的网站 https://oheng.com)
那就继续进行第2步。

第二步:编辑options-ssl-nginx.conf
如果你和我一样使用Certbot来生成或更新Let’s Encrypt证书,你还需要修改下面这个配置文件。

sudo vi /etc/letsencrypt/options-ssl-nginx.conf

找到下面这行

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

修改为

ssl_protocols TLSv1.2 TLSv1.3;

保存, 退出。
检查Nginx配置是否有效

sudo nginx -t

重新加载Nginx

sudo service nginx reload

现在再次通过https://www.ssllabs.com/ssltest/index.html 检查你的主机上是否已经禁用了TLS 1.0和1.1了。在绝大多数情况下,上面的步骤就够了,但如果TLS 1.0和1.1仍然没有被禁用, 你可以再检查下面的配置文件。
/etc/nginx/sites-available/default

/etc/nginx/sites-available/example.com
还是找下面这行。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
修改为
ssl_protocols TLSv1.2 TLSv1.3;

好了,现在你的网站也应该是A+评级了,是不是又感觉美滋滋了。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注