本博客开始支持 TLS 1.3

Scroll Down

1.需要先升级 OpenSSL 到 1.1.1+

可参考:CentOS7 Nginx 服务化、开机自启动

升级后,查看 openssl 支持的加密套件

openssl ciphers -v

2.Nginx 配置支持 TLS v1.3

# 增加 TLSv1.3(1和1.1不安全,废弃)
#TLSv1.3(需要openSSL支持TLS1.3)
ssl_protocols       TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:!aNULL:!eNULL:!LOW:!ADH:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;

包含 TLS13 是 TLS 1.3 新增的 Cipher Suite,加在最前面即可,只保留安全级别比较高的加密套件。

3.配置 Perfect Forward Secrecy

修复服务器瞬时 Diffie-Hellman 公共密钥过弱。

先进入NGINX的配置目录

cd /etc/nginx/ 

需要生成足够强的Diffie-Hellman参数,

openssl dhparam -out dh4096.pem 4096 

有人认为 4096 位是过大的,会给系统的CPU造成不必要的负担,但是对于现代计算能力来说,这似乎是一个值得的妥协。(有人使用 2048 位)

在nginx中配置

ssl_dhparam dh4096.pem;

重启nginx生效。

还可参考:Implementing SSL Perfect Forward Secrecy in NGINX Web-Server

4.验证是否支持 TLS 1.3

检测浏览器验证

ssl.haka.se

目前最新版 Chrome 和 Firefox 都支持 TLS 1.3,但需要手动开启:

Chrome 84 已经完全移除了 TLS 1.0 和 TLS 1.1;
Firefox 61+,将 about:config 中的 security.tls.version.max 改为 4

服务端检测

SSL Server Test(Powered by Qualys SSL Labs)

5.开启 HSTS

HTTP Strict Transport Security(通常简称为HSTS)是一个安全功能,它告诉浏览器只能通过 HTTPS 访问当前资源,而不是HTTP,浏览器应该自动把所有尝试使用 HTTP 的请求自动替换为 HTTPS 请求。

需要全站开启 HTTPS

Nginx 添加配置

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload" always;

具体可参考:HTTP Strict Transport Security

6.DNS CAA

使用 CAA 记录防止域名证书劫持,目前阿里云已支持。

可参考:阿里云官方文档

可以访问 https://sslmate.com/caa ,在1、Enter Your Domain Name这里输入主域名(一级域名),点Auto-GeneratePolicy生成主域名的CAA记录值;

具体可参考:教你给阿里云域名解析添加CAA记录,防止你的域名证书被劫持!