虽然一直以来源站还没有支持tls1.3但是透过CDN提供了支持。通过CDN表明上是支持了tls1.3可是我自建CDN的网站却无法等到支持。本来几年前就折腾编译了但是没有成功,刚刚发现了新的套件就试了试没想到就能tls1.3了。写着写着突然想到是不是现在源站的Nginx改改加密套件就可以支持了?!
本次同样在之前搭建VeryNginx当基础的前提下再次编译支持。
在一台Centos一台Debian但是操作又不完全一样。
Centos:
[root@Centos ~]# openssl ciphers -V tls1_3 | column -t 0x13,0x02 - TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD 0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD 0x13,0x01 - TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD 0x13,0x04 - TLS_AES_128_CCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESCCM(128) Mac=AEAD
[root@Centos ~]# openssl version OpenSSL 1.1.1 FIPS 11 Sep 2018
Debian:
root@Debian:~# openssl ciphers -V tls1_3 | column -t Error in cipher list 140023812597392:error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match:ssl_lib.c:1294:
root@Debian:~# openssl version OpenSSL 1.0.1t 3 May 2016
期间遇到apt-get install apt-transport-https
解决:
root@Denbian:~# apt-get update E: The method driver /usr/lib/apt/methods/https could not be found. N: Is the package apt-transport-https installed?
还有就是其中Debian的OpenSSL版本不知道为什么无法更新编译都没有成功可能是打开方式不对。
安装
1.这次我不跟上次一样使用dev版本的OpenSSL了而是到官网上面下载1.1.1d版本的。
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz tar xvf openssl-1.1.1d.tar.gz cd openssl-1.1.1d grep TLS1_3_VERSION_DRAFT_TXT ./* -R bash ./include/openssl/tls1.h ./config --prefix=/usr/local/openssl1.1.1 --openssldir=/usr/local/openssl1.1.1 --libdir=lib shared -Wl,-R,'$(LIBRPATH)' -Wl,--enable-new-dtags enable-ec_nistp_64_gcc_128 enable-tls1_3 make make install
不过说实话上面的操作不知有没有效果因为我无法通过其升级Debian的版本。而且最后Centos也没明显变化(可能有误,有待下次测试)
[root@kCentos ~]# openssl ciphers -V tls1_3 | column -t 0x13,0x02 - TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD 0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD 0x13,0x01 - TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD 0x13,0x04 - TLS_AES_128_CCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESCCM(128) Mac=AEAD
root@Denbian:~/openssl-1.1.1d# openssl ciphers -V tls1_3 | column -t Error in cipher list 140481075844752:error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match:ssl_lib.c:1294:
最后我干脆直接把OpenSSL的路径改成1.1.1d版本的这个算了。
./configure --prefix=/opt/verynginx/openresty --user=nginx --group=nginx --with-openssl=/root/openssl-1.1.1d --with-http_v2_module --with-http_sub_module --with-http_stub_status_module --with-luajit --add-module=/root/nginx-rtmp-module --with-openssl-opt="enable-tls1_3 enable-ec_nistp_64_gcc_128" --with-pcre
其实两条是一样的就是上面的命令带了rtmp的编译下面这个没有
./configure --prefix=/opt/verynginx/openresty --user=nginx --group=nginx --with-openssl=/root/openssl-1.1.1d --with-http_v2_module --with-http_sub_module --with-http_stub_status_module --with-luajit --with-openssl-opt="enable-tls1_3 enable-ec_nistp_64_gcc_128" --with-pcre
抛弃一些原来就有的我认为开启tls1.3只需要--with-openssl-opt="enable-tls1_3 enable-ec_nistp_64_gcc_128" --with-pcre
就行了(有待指正)
最后照例将Nginx -V
水上来:
root@Denbian:~# /opt/verynginx/openresty/nginx/sbin/nginx -v nginx version: openresty/1.15.8.2 root@Denbian:~# /opt/verynginx/openresty/nginx/sbin/nginx -V nginx version: openresty/1.15.8.2 built by gcc 4.9.2 (Debian 4.9.2-10+deb8u2) built with OpenSSL 1.1.1d 10 Sep 2019 TLS SNI support enabled configure arguments: --prefix=/opt/verynginx/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1rc1 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.15 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.7 --with-ld-opt=-Wl,-rpath,/opt/verynginx/openresty/luajit/lib --user=nginx --group=nginx --with-openssl=/root/openssl-1.1.1d --with-http_v2_module --with-http_sub_module --with-http_stub_status_module --add-module=/root/nginx-rtmp-module --with-openssl-opt='enable-tls1_3 enable-ec_nistp_64_gcc_128' --with-pcre --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module
[root@Centos ~]# /opt/verynginx/openresty/nginx/sbin/nginx -v nginx version: openresty/1.15.8.2 [root@Centos ~]# /opt/verynginx/openresty/nginx/sbin/nginx -V nginx version: openresty/1.15.8.2 built by gcc 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC) built with OpenSSL 1.1.1d 10 Sep 2019 TLS SNI support enabled configure arguments: --prefix=/opt/verynginx/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1rc1 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.15 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.7 --with-ld-opt=-Wl,-rpath,/opt/verynginx/openresty/luajit/lib --user=nginx --group=nginx --with-openssl=/root/openssl-1.1.1d --with-http_v2_module --with-http_sub_module --with-http_stub_status_module --with-openssl-opt='enable-tls1_3 enable-ec_nistp_64_gcc_128' --with-pcre --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module
差点忘记了编译后修改才成功的套件了
TLS13-AES-128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
参考
如何让Nginx快速支持TLS1.3协议详解:https://www.jb51.net/article/138665.htm
纯自嗨,LNMP下启用TLSv1.3支持过程全记录:https://www.imydl.tech/lnmp/245.html
让Nginx快速支持TLS1.3协议:https://www.jianshu.com/p/aa3f7c4d3a10
Nginx开启TLSv1.3和HTTP/2:https://www.acgist.com/article/541.html
使用 OpenSSL 命令行管理证书:https://www.jianshu.com/p/1daae319d5fc
解决apt-get update更新问题:/usr/lib/apt/methods/https could not be found. 和 NO_PUBKEY 7EA0A9C3F273FCD8:https://blog.csdn.net/baiyoucheng_007/article/details/83095848
开始试用VeryNginx:https://www.cyzwb.com/2019/11/197.html
Debian8重新编译Nginx以支持HTTP/2:https://www.cyzwb.com/2018/01/168.html
ChiuYut
2019年11月27日