Nginx开启TLS 1.3
in 运维web with 7 comments

随着互联网安全越来越受到重视,越来越多的网站选择启用https来保证数据的加密传输,TLS1.2发布于2008年8月,至今正好有10年,所以新协议TLS1.3呼之欲出。Google chrome在最近的版本更新中也开始对TLS1.3进行支持,TLS1.3对于TLS1.2有重大改写,提高了安全性并且提高了速度,

安装依赖

我用的是Ubuntu 16.04+lnmp.org一键脚本系统,首先安装依赖和编译工具:

sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g-dev unzip git

下载Brotli

不需要可略过,可以参考Nginx启用Brotli压缩算法

最新版已经无需安装额外依赖 bagder/libbrotli

cd /usr/local/src/
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init
cd ..

下载OpenSSL

为了支持 TLS 1.3 final,需要使用 OpenSSL 1.1.1 正式版:

wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
tar -zxvf openssl-1.1.1.tar.gz
mv openssl-1.1.1.tar.gz openssl

编译并安装 Nginx

cd /usr/local/src
VERSION=1.14.1 #换成你想要的版本
wget http://nginx.org/download/nginx-${VERSION}.tar.gz
tar -xvzf nginx-${VERSION}.tar.gz

cd /usr/local/src/nginx-${VERSION}
./configure  --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module --with-openssl=../openssl --with-openssl-opt='enable-tls1_3 enable-weak-ssl-ciphers' --add-module=/usr/local/src/ngx_brotli

make
sudo make install

如果要支持IE8,添加enable-weak-ssl-ciphers选项

以上步骤会把 Nginx 装到 /usr/local/nginx/ 目录,如需更改路径可以在 configure 时指定。

站点配置

我的站点配置文件在/usr/local/nginx/conf/vhost/hanyibo.com
修改一下两处参数:

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;

如果你不打算继续支持 IE8,可以去掉包含 3DESCipher Suite

测试

Chrome
chrome-tls13-test.png
Firefox
firefox-tls13-test.png

Responses
  1. ll

    收藏一下,感觉好难啊

    Reply
  2. 这两天也折腾了一下。我也用的军哥lnmp,改了下脚本,现在可以自动签let's encrypt RSA/ECC双证书。然后用网上的办法给openssl打了补丁,现在同时支持TLS1.3 draft 28, draft 26, draft 23, final ,自我YY一下,感觉还行~

    Reply
    1. @WeiCN

      够折腾的啊,我比较懒没弄双证书,现在还用xp系统的应该不会看我的网站。

      Reply
  3. 用ECC的大佬

    Reply
    1. @黑暗游侠

      俺是用ECC的小白

      Reply
  4. 目前用的69还不支持final,最多只能开到28

    Reply
    1. @WeiCN

      赶快升级70

      Reply