#教程#Nginx 启用 TLSv1.3
6 月,OpenSSL 发布了 1.1.1 pre8 版本,开始支持最新的 TLSv1.3 draft28 草案。
几天前,ietf 发布 TLSv1.3 最终定稿 RFC 8446(Via),这将作为 TLSv1.3 的正式版本,结束 draft23 draft28 等草案阶段的历史使命,并为日后的互联网安全提供巨大推动力。
然后在今天,BoringSSL 已提供 TLS_1_3_VERSION (tls13_rfc) 支援(Via)。
关于 TLSv1.3 的特性,可以参照 维基百科 傳輸層安全協議。对于 TLSv1.3 的更多科普,也可参看 dcc 的文章。
今日提交的 BoringSSL Commit d451453 已可用于 TLSv1.3 的正式部署。
编译
使用 BoringSSL 时,开启 TLSv1.3 要求使用 Nginx master 分支及以上(Via)。BoringSSL 也需采用 master 分支。
git clone --branch=master https://github.com/nginx/nginx.git
git clone --branch=master https://github.com/google/boringssl.git
接下来就是编译,过程参考这篇文章。
配置
编译完成后, Nginx 配置文件 server 段添加 ssl_protocols TLSv1.3;。
TLSv1.3 现行 cipher 只有以下三种:
TLS-AES-128-GCM-SHA256
TLS-AES-256-GCM-SHA384
TLS-CHACHA20-POLY1305-SHA256
所以 Nginx 配置文件应该是这样写的:
server {
...
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers '[TLS13-AES-128-GCM-SHA256|TLS13-CHACHA20-POLY1305-SHA256] TLS13-AES-256-GCM-SHA384 [ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305] ECDHE-RSA-AES256-GCM-SHA384';
}