今天正好周末有时间,就将使用的生产环境 lnmp1.5 给升级到了 lnmp1.6 测试版,对于 TLSv1.3 明月其实没有刚需的,以前就玩儿过(可参考「 纯自嗨,LNMP下启用TLSv1.3支持过程全记录 」一文),但是当时有个问题就是编译 Nginx 的Lua模块的时候就会出错,应该是跟 openssl 有冲突造成的,所以当时就必须做出取舍了,这次 lnmp 1.6 测试版里军哥已经修复了这个问题了,并且 OpenSSL 1.1.1a 对 TLSv1.3 的支持好像在Chrome浏览器里更完美了,所以就有了今天折腾的这个打算了。
TLS 1.3 改进增加了“不额外增加网络延时”模式(0-RTT)。对于近期访问过的站点,可以直接发送有用的数据,而不需要经过握手。
针对0-RTT及其他相关的扩展性,早在2016年5月之前,微信就基于TLS1.3草案标准,设计实现了一套安全通信协议mmtls。基于TLS1.3的微信安全通信协议mmtls介绍。
因此,加上 HTTP/2 对多资源加载的优化,通过 HTTPS + HTTP/2 完全有希望使得速度比传统 HTTP 协议更快更安全。
所以配置 Nginx 支持 TLS 1.3 需要注意一点:默认情况下 Nginx 因为安全原因,没有开启 TLS 1.3 0-RTT,可以通过添加 ssl_early_data on;
指令开启 0-RTT。
ssl_early_data on; #Early data (0-RTT) (推荐开启)
另外请添加 Early-Data 头告知后端, 防止重放攻击
proxy_set_header Early-Data $ssl_early_data;
其他的基本就是参考「 纯自嗨,LNMP下启用TLSv1.3支持过程全记录 」一文的就可以了。
最后 使用 nginx -t
测试一下 确认无问题