TLSv1.3已经于2018年8月正式发表,由于前段时间抛弃了Cloudflare,服务端更新了Nginx版本,但是 CentOS 7 系统中自带的 openssl 版本是1.0.2k,不支持TLSv1.3。于是再次重新编译 Nginx 并使其支持 TLSv1.3。

重新编译 Nginx

OpenSSL 从 1.1.1 开始支持 TLS v1.3。我们需要下载 OpenSSL 的源码,并将其路径加入 Nginx 后重新编译。

关于安装 Nginx 请见:

下载 OpenSSL 源码

OpenSSL 的源码可以在这里找到,当前最新版本为1.1.1g。

cd /usr/local/src/
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar xf openssl-1.1.1g.tar.gz

重新编译 Nginx

使用 nginx -V 查看编译参数,然后进入 nginx 源码目录。

# 重新配置并附加openssl库
./configure --with-openssl=../openssl-1.1.1g 其他编译参数

# 编译
make

更新 Nginx

# 备份
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

# 更新
make upgrade
cp objs/nginx /usr/local/nginx/sbin/

配置 nginx.conf

nginx.conf 中添加配置,使服务器支持TLSv1.3。

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

添加完成后,重载 Nginx。

检测 TLSv1.3

  • 在 Chrome 中,按F12打开Security标签,可以看到TLS版本和使用的加密套件。

TLS