2018.10.22 本站已启用TLSv1.3

发布于 2018-10-22  812 次阅读


为优化整体访问速度

本站已启用TLS v1.3 (Draft 23.26.28.Final)

其实就是为了跟风


下面说一下如何给宝塔的NGINX开启TLS1.3

1.安装依赖

Centos / Red Hat

yum install jemalloc-devel libuuid-devel libatomic libatomic_ops-devel expat-devel unzip autoconf automake libtool gd-devel libmaxminddb-devel gcc-c++ curl

Ubuntu / Debian

apt install libjemalloc-dev uuid-dev libatomic1 libatomic-ops-dev expat unzip autoconf automake libtool libgd-dev libmaxminddb-dev g++ curl

2.下载OpenSSL

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

3.给OpenSSL打补丁 以支持TLS1.3 Draft 23,26,28,Final

cd openssl-1.1.1
#Add standalone TLS 1.3 draft patch
wget https://raw.githubusercontent.com/hakasenyang/openssl-patch/master/openssl-1.1.1-tls13_draft.patch
patch -p1 < openssl-1.1.1-tls13_draft.patch
#CHACHA20补丁
wget https://raw.githubusercontent.com/hakasenyang/openssl-patch/master/openssl-1.1.1-chacha_draft.patch
patch -p1 < openssl-1.1.1-chacha_draft.patch

4.下载NGINX 1.15.5

wget http://nginx.org/download/nginx-1.15.5.tar.gz
tar -xzvf nginx-1.15.5.tar.gz
cd nginx-1.15.5

5.编译

./configure \
--user=www \
--group=www \
--prefix=/www/server/nginx \
--with-openssl=../openssl-1.1.1 \
--add-module=/www/server/nginx/src/ngx_devel_kit \
--add-module=/www/server/nginx/src/ngx_cache_purge \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-http_gunzip_module \
--with-ipv6 \
--with-http_sub_module \
--with-http_flv_module \
--with-http_addition_module \
--with-http_realip_module \
--with-http_mp4_module \
--with-ld-opt=-Wl,-E \
--with-openssl-opt='enable-tls1_3 enable-weak-ssl-ciphers'

./configure 之后会有IPV6的警告 这个可以不用管

make -j 2

这个代表使用 2 线程进行编译 根据你CPU核心判断 如果中途报错 改成 make 即可

6.寻找已存在的NGINX 并替换

find / -name nginx

可以看到/www/server/nginx/sbin 就是宝塔的NGINX位置

使用cp命令替换掉宝塔的NGINX (替换之前可以先备份一下宝塔的NGINX)

cp objs/nginx /www/server/nginx/sbin/nginx

#如果提示文件正忙 需要先去宝塔面板停止NGINX 然后覆盖即可

检验NGINX版本是否正确

nginx -V

7.配置NGINX

宝塔的路径 /www/server/panel/vhost/nginx

ssl_certificate 证书pem;
ssl_certificate_key 证书key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ecdh_curve X25519:P-256:P-384;
ssl_prefer_server_ciphers on;

记住 这里不需要填写ssl_ciphers 否则访问网站会出现ERR_SSL_VERSION_OR_CIPHER_MISMATCH错误

8.测试

myssl.com测试结果

浏览器访问

这里以chrome 69为例


公交车司机终于在众人的指责中将座位让给了老太太