Cinema

[nginx]nginx启用TLS1.3
何为TLS1.3说白了就是传输层安全协议(Transport Layer Security)的一个新版本,上一代T...
扫描右侧二维码阅读全文
31
2019/01

[nginx]nginx启用TLS1.3

何为TLS1.3

说白了就是传输层安全协议(Transport Layer Security)的一个新版本,上一代TLS1.2发布距今已有近十年。所以TLS1.3应运而生,与18年8月正式发表,nginx自1.13起就支持TLS1.3,chrome67版本便默认启用TLS1.3。

在大势所趋下本站也支持TLS1.3,但限于基本国情,仍旧支持TLS1.2。

为何TLS1.3

TLS1.3握手只涉及一次往返,较TLS1.2有近一倍的速度提升。

TLS1.3也更加安全,所用加密套件具有前向安全性。

如何TLS1.3

openssl

首先openssl需要1.1.1版本,现在LTS版本也发布了,下载源码解压即可:

$ wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
$ tar -xzvf openssl-1.1.1.tar.gz

然后如果单给nginx用的话其实都不用make的(好吧其实是我这make失败懒得查了)

nginx

相关配置

首先安装编译依赖:

$ sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g-dev liblua5.1-dev libluajit-5.1-dev libgeoip-dev google-perftools libgoogle-perftools-dev

nginx支持需要大于1.13版本,正好我这是1.10的,于是我索性直接升到主线的1.15版了。

下载源码:

wget https://nginx.org/download/nginx-1.15.4.tar.gz
tar -xzvf nginx-1.15.4.tar.gz

nginx这边麻烦一点因为要重新编译,欸C/C++的程序就是这样,不跨平台欸,先用nginx -V查看原来的编译参数,复制下来,然后在后面加上--with-openssl=/your-openssl-path/openssl-1.1.1,后面的路径记得填自己的。这就是后面要用到的编译参数。

openssl中的TLS1.3已经默认开启,编译时不需要加上enable-tls1_3

然后有个小坑就是这个版本的openssl和nginx都支持final了所以就不用打补丁了,一开始我打上发现编译失败。

编译

$ cd nginx-1.15.4
$ ./configure your-compilation-args
$ make
$ make install

按照阿里云t5的速度,大概可以去泡一杯红茶。

nginx配置

注意你make install后的目录,看下make到哪去了。

像我这原nginx配置在/etc/nginx/下,按照原来的编译参数,配置文件位置基本不变的,只是直接在命令行输nginx时还是原来的,新的执行脚本在/usr/share/nginx/sbin/nginx那里,旁边还有一个nginx.old。请查看make install的输出找到你的执行脚本。

所以先停止旧nginx:

$ nginx -s stop

开启新的:

$ cd /usr/share/nginx/sbin
$ ./nginx

这样就成功升级了nginx。

对于启用TLS1.3需要在配置文件中修改如下内容:

listen 443 ssl;

# ssl on;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:EECDH+AES256;

注意的是ssl on这个选项在nginx1.15之后被弃用了,使用listen 443 ssl;即可。

还有一个值得注意的地方,所以虚拟主机都得启用TLS1.3才会生效(一开始我就高兴的把sites-available里面的主机都启用了,然后没发现nginx.conf中还有一个ssl_protocols,找了半天)。

验证是否成功

Qualys SSL Labs's SSL Server Test 即可。

或者在chrome浏览器的更多工具>开发者工具>安全选项卡查看。

我的文章对您有帮助吗?
请大佬投食
扫一扫拿红包 → 扫商家收款码 → 转账红包相同金额
免费赞赏完成
Last modification:January 31st, 2019 at 07:24 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment