早在今年年初的时候,明月其实都有对 TLSv1.3 的多次尝试,在【纯自嗨,LNMP 下启用 TLSv1.3 支持过程全记录】一文里甚至分享了在军哥 LNMP1.4 一键安装包环境下如何启用 TLSv1.3 的支持。当时,受制于 TLSv1.3 支持情况实在是凤毛麟角(无论是客户端浏览器还是服务器层面的 CDN 都是少有支持的),没有“自嗨”几天就给停用了。
没有想到随后又拍云 CDN 开始提供对 TLSv1.3 的支持,刚开始仅仅是测试仅支持几个 CDN 节点,现在已经正式支持 TLSv1.3 协议了,也就是说只要你的服务器端支持 TLSv1.3,那么使用又拍云 CDN 后所有的 CDN 节点也可以使用 TLSv1.3,随着 TLSv1.3 正式上线我感觉是越来越近了(可参考【IETF 正式批准 TLS1.3 成为互联网新标准】),感觉还是越早部署越好了,免得到时候“手忙脚乱”的“折腾”还不如现在未雨绸缪的“折腾”了!哈哈,听起来真“绕”!
明月的 LNMP 环境使用的是军哥 LNMP 1.5正式版,要支持 TLSv1.3 其实就是升级当前 LNMP 环境下 OpenSSL 到支持 TLSv1.3 的版本即可,OpenSSL 至今已经发布了 N 多个支持 TLSv1.3 的草案(Draft)了,其中早期的 Draft 18 和 Draft 19 目前已经被不少浏览器厂商兼容支持了,所以理论上我们只需要将 OpenSSL 升级到 Draft 18 就可以了,在 LNMP 1.5 里升级 OpenSSL 其实非常的简单,只需要关闭 LNMP 默认的支持 OpenSSL 选项,手动添加编译选项指向新版 OpenSSL 源码目录即可完成,这些都在 LNMP 1.5 根目录的 lnmp.conf 里修改和设置即可,需要和修改的地方如下面代码所示:
- Nginx_Modules_Options='--with-threads --with-openssl=/root/lnmp1.5/src/openssl-master --with-openssl-opt ='enable-tls1_3''
- Enable_Nginx_Openssl='n'
- Enable_PHP_Fileinfo='n'
- Enable_Nginx_Lua='n'
上述配置文件里的黑体加重的就是你 OpenSSL 源码所在位置,你只需要修改一下这里的地址即可,然后更新一下 Nginx 重新编译后就可以体验到 TLSv1.3 了,当然还需要在 Nginx 的站点配置文件里配置 SSL 协议和算法的哦,具体可以参考【纯自嗨,LNMP 下启用 TLSv1.3 支持过程全记录】一文,里面有详细的记录和教程的,基本上大家复制粘贴就可以了。
因为明月当前使用的是 Draft 23 草案的 OpenSSL,所以发现几乎没有几个浏览器支持,唯一一个还是让我很意外的微软 EDGE 浏览器 Android 版,如下图:
看到了吧,EDGE 竟然支持,意外不?惊喜不?
基本上现在主流的浏览器正式版的几乎很少支持 TLSv1.3,大部分所谓的支持都是内测版啥的,像 Chrome、Firefox 等等这些就是这样的,至于说 TLSv1.3 的好处明月这里就做赘述了,总之就是 TLSv1.3 更快速、更安全、更有效率。现在看来在服务器端启用 TLSv1.3 算是一个“半自嗨”了,相对于之前的“纯自嗨”还是有不少进步的,哈哈!