OpenSSL 已发布 OpenSSL-1.1.1 pre release 8版本,已经支持到最新的 TLS1.3 Draft 28 ,关于 TLS1.3 的优点我已经在TLS1.3展望中提到。现在最新的 OpenSSL 1.1.1 pre release 中已经可以体验 TLS1.3 中的特性,不过还不是正式版,所以不要在生产环境中使用

通过这个 Patch 可以使 OpenSSL 同时支持 TLS 1.3 draft 23, 26, 28

目前我使用的是 Nginx-1.15.2 ,所以与 OpenSSL 一同手动编译
拉取 openssl-dev
主分支已经开发到草案28,Chrome可以在chrome://flags中开启 Draft 28

git clone https://github.com/openssl/openssl.git

下载 Nginx-1.15.2

wget -c http://nginx.org/download/nginx-1.15.2.tar.gz
tar zxf nginx-1.15.2.tar.gz

设定编译参数(OpenSSL中的TLS1.3已经默认开启,编译时不需要加上enable-tls1_3)

cd nginx-1.13.5

./configure  --with-openssl=../openssl   --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module

make
sudo make install

Nginx 的配置 ssl_protocols 中加入 TLSv1.3
同时在 ssl_ciphers 中添加 TLS1.3 的加密套件,支持:

TLS13-AES-128-GCM-SHA256
TLS13-AES-256-GCM-SHA384
TLS13-CHACHA20-POLY1305-SHA256
TLS13-AES-128-CCM-SHA256
TLS13-AES-128-CCM-8-SHA256

保存,重启 Nginx ,之后我们就能在 FireFox Beta 和 Chrome Beta 中看到网站已在使用 TLS1.3 (前提是你先在浏览器中手动打开 TLS1.3 支持)。