开发历时近2年,在上个星期,OpenSSL终于发布了v1.1.1的第一个预览版,这也是支持 TLSv1.3 的 OpenSSL 的第一个 Release 。
虽然 TLS1.3 的标准还未修改完成,但绝大部分的浏览器(Chrome)都已经内置了实验性TLS1.3的选项。
下面记录一下 Nginx built with OpenSSL 1.1.1 的过程吧
使用系统: Debian Stretch
依赖安装,本人习惯性使用 clang 而非 gcc ,所以把 clang 装上了,不喜请忽略
sudo apt install build-essential clang-3.9 -y
Nginx 在 1.13 才加入了 TLS1.3 的支持,编译时要注意获取 1.13 以上的版本
OpenSSL 1.1.1 pre1 兼容的 TLS1.3 版本为 draft-23
wget http://nginx.org/download/nginx-1.13.9.tar.gz wget https://www.openssl.org/source/openssl-1.1.1-pre2.tar.gz tar zxvf nginx-1.13.9.tar.gz tar zxvf openssl-1.1.1-pre2.tar.gz
OpenSSL 1.1.1 默认开启 tls1.3 ,所以只需要在编译时追加 --with-openssl
即可
cd nginx-1.13.9 COMPILER=clang-3.9 CXX=clang++-3.9 CC=clang-3.9 ./configure \ --with-openssl=../openssl-1.1.1-pre2 \ # 其他编译开关 make sudo make install
安装完成后的 Nginx 为 built with OpenSSL 1.1.1 就是支持 TLS1.3 的了
TLS1.3中新增了5种加密套件,分别为
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
Nginx 设定很简单,只需要
ssl_protocols
中新增TLSv1.3
ssl_ciphers
最前面加入以上5种加密套件使用 Mozilla 提供的 SSL Configuration Generator 生成并修改即可。
最终看上去的配置是这样的
server { #... ssl_certificate /path/to/signed_cert_plus_intermediates; ssl_certificate_key /path/to/private_key; #... ssl_protocols TLSv1 TLSv1.1 TLSv1.2 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:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS; #... }
启动 Nginx 无错误,然后在浏览器端还需要做一些工作。
要启用 TLS1.3 draft-23 至少需要 Chrome 65 以上( Chrome 64 以下支持的是 TLS1.3 draft-18)
在 chrome://flags/#tls13-variant 中选择 Enabled (Draft 23)
并重启浏览器
访问网站时即可看到 TLS1.3 生效
喵~
Meow~~网站做的不错嗷, 我最近也在学前端的呢….