[聚合文章] 纯自嗨,LNMP下启用TLSv1.3支持过程全记录

软件架构 2018-01-11 11 阅读

其实,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.1draft-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 测试节点,大家可以考虑尝试一下。

  • 本文部分内容摘自【 常阳时光 】博客文章,特此声明!

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。