沙唐桔

lnmp 1.4 更新至 nginx 1.12.2

lnmp 更新 nginx 还是挺方便的,执行 ./upgrade.sh nginx 然后输入 nginx 版本号就可以自动升级。nginx 升级为平滑升级,升级过程不影响 nginx 运行。

其实原本是折腾 TLSv1.3 的,网上看教程好像不难。比如,JerryQu 的本博客开始支持 TLS 1.3

照着教程,结合 lnmp1.4,开启 TLSv1.3 并不难。

OpenSSL 1.1.1

为了支持 TLS 1.3,需要使用 OpenSSL 1.1.1 的 draft-18 分支:

git clone -b tls1.3-draft-18 --single-branch https://github.com/openssl/openssl.git openssl

升级 nginx

编辑 lnmp1.4 目录下 lnmp.conf 配置文件,在 Nginx_Modules_Options 处加入 OpenSSL 支持 TLS 1.3 关键选项 enable-tls1_3,以及 enable-weak-ssl-ciphers,作用是让 OpenSSL 继续支持 3DES 等不安全的 Cipher Suite,如果不加这个选项,XP 下 IE8 会无法访问。

Nginx_Modules_Options='--with-openssl=/root/openssl --with-openssl-opt=enable-tls1_3 enable-weak-ssl-ciphers'

但是,实际测试运行,这个配置无法顺利升级,会提示 enable-weak-ssl-ciphers 错误无法继续。是因为 CentOS7 系统还停留在 OpenSSL 1.0.2 的原因?还是这个配置这样写不对呢?

去掉 enable-weak-ssl-ciphers 选项,就可以顺利升级到 nginx 1.13.7,并开启 TLSv1.3。

WEB 站点配置

在 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;

重启 lnmp restart,使用 Qualys SSL Labs's SSL Server Test 可以测试到服务器支持 TLSv1.3,但是 XP 下 IE8 无法访问。

enable-weak-ssl-ciphers

折腾一圈,还是无法添加 enable-weak-ssl-ciphers 编译,也许是要先升级系统 OpenSSL?据说手动升级 OpenSSL 有可能导致未知错误,暂时放弃折腾,最后只是顺手升级 nginx 到 1.12.2 稳定版本。

参考资料

JerryQu - 本博客开始支持 TLS 1.3

一起回味 - 在LNMP 1.4中开启TLS 1.3

WDlinux - openssl升级教程及nginx升级教程


老司机快来带带老杨……