其实,OpenSSL 早几个月已经在测试开发版里加入了 TLSv1.3 的支持,在LNMP下只需要重新编译一下Nginx时,将OpenSSL替换为1.1.1 dev版即可支持TLSv1.3了,Nginx正式版1.12本身已经是加入了对TLSv1.3的支持的。 说起来很简单,但是明月尝试了N次后都放弃了,都是编译失败。o(╯□╰)o
在看到【 常阳时光 】博客【 本博客开始支持 TLS 1.3 】一文后才算是知道问题出在哪里了,于是趁着中午下班前夕撸起袖子折腾了一番,终于给搞定了!自嗨完美收工。
以前明月都是按照常规在 lnmp.conf 里添加如下的配置来编译Nginx的:
Nginx_Modules_Options='--with-openssl=/root/openssl --with-openssl-opt="enable-tls1_3 enable-weak-ssl-ciphers"'
事实证明,这是绝对的“想当然”,失败是必然的。感觉是因为军哥LNMP 1.4包就没有考虑到兼容 TLSv1.3 的问题才造成这个“失败”的。
好在Linux脚本的无敌强大,参照【 本博客开始支持 TLS 1.3 】一文所述的方法,直接修改 include/upgrade_nginx.sh 文件就可以完美解决了。
直接修改 upgrade_nginx.sh
, ./configure
处加上 OpenSSL
相关的这个配置项。把文件中两处
${Nginx_With_Openssl} ${NginxMAOpt} ${Nginx_Modules_Options}
替换成下面的代码:
--with-openssl=/root/lnmp1.4/src/openssl-1.1.1-dev ${NginxMAOpt} --with-openssl-opt="enable-tls1_3 enable-weak-ssl-ciphers"
注意 "enable-tls1_3 enable-weak-ssl-ciphers"
的英文双引号 "" 不要漏掉。
upgrade_nginx.sh
文件中的 Install_Nginx_Openssl
删除,最后 upgrade_nginx.sh
文件如下图所示:
接着把 OpenSSL 1.1.1
的 draft-19
分支代码克隆到 /root/lnmp1.4/src/openssl-1.1.1-dev
目录下备用:
`git clone -b tls1.3-draft-19 --single-branch https://github.com/openssl/openssl.git
root/lnmp1.4/src/openssl-1.1.1-dev`
然后执行 ./upgrade.sh nginx
,输入想要升级的 nginx
版本,如 1.13.8
,回车确认。如无意外,就能编译成功。
编译成功后,记得要在站点的Nginx配置文件里加上 TLSv1.3 的支持哦(包括算法也要修改的),如下:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # 增加 TLSv1.3 ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
保存后,重启一下Nginx即可。
剩下的大家就去自行体验吧,如果你启用了 CDN 的话,可能受制于 CDN 节点不支持 TLSv1.3 协议,在浏览前端应该是感觉不到啥的,至于说浏览器,目前Firefox和谷歌Chrome对 TLSv1.3 都是支持的,但正式稳定版都需要自己手动开启,具体开启方法,大家可以参考【 又拍云 CDN 的HTTPS已率先支持TLS 1.3 】一文中的方法开启即可。
总之,因为 TLSv1.3 目前还只是在测试阶段,并没有完全的普及开来,所以现在启用 TLSv1.3 的话基本上就是纯自嗨了。好在,目前国内 CDN 服务商又拍云已经开始了 TLSv1.3 的 CDN 测试节点,大家可以考虑尝试一下。
- 本文部分内容摘自【 常阳时光 】博客文章,特此声明!
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。