可搜索,可注册,可登录,致敬逗比大佬!尽在救援版逗比根据地 dbgjd.com
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程

为Nginx开启tls 1.3支持,顺便编译openssl1.1.1a

8月份的时候,TLS1.3正式发布了(RFC 8446),9月份的时候,支持TLS 1.3的Openssl 1.1.1正式发布了。对于我这种喜欢追新的人来说,终于可以升级了……(噢现在是12月哦……)其实……这就是个备忘录。

启用TLS 1.3的要求

需要重新编译Nginx,加入enable-tls1_3参数,需要浏览器也支持TLS 1.3,如果你使用最新版本的Chrome&Firefox,那么就可以。哦对了,不需要重新编译openssl哦

下表是目前的几个发行版对openssl版本的支持,虽说和本文内容干毫无关系,仅供观赏。

Ubuntu 18.04 Openssl 1.1.0g
Ubuntu 18.10 Openssl 1.1.1
Debian sid Openssl 1.1.1a
Debian 9 Stretch Openssl 1.1.0j
CentOS 7 Openssl 1.0.2k

安装依赖

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

获取必要组件

openssl 1.1.1a

wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz tar xf openssl-1.1.1a.tar.gz && rm openssl-1.1.1a.tar.gz 

Nginx 1.15.7

wget https://nginx.org/download/nginx-1.15.7.tar.gz tar xf nginx-1.15.7.tar.gz && rm nginx-1.15.7.tar.gz cd nginx-1.15.7 

编译Nginx

./configure --user=www --group=www --prefix=/usr/local/nginx --with-openssl=../openssl-1.1.1a --with-openssl-opt='enable-tls1_3' --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_sub_module --with-stream --with-stream_ssl_module 

配置完成之后

make make install 

配置

在你的站点的配置文件中,如下配置即可:

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-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 

检测与验证

浏览器

升级Chrome吧,默认就应该支持了。直接浏览器访问,开F12在security中即可看到。

为Nginx开启tls 1.3支持,顺便编译openssl1.1.1a

ssllabs

https://www.ssllabs.com/ssltest/

testssl

需要1.1.1或更高版本的openssl

./testssl –p –P www.example.com 

Openssl

注意,同样需要openssl版本为1.1.1或更高

openssl s_client -connect www.example.com:443 -tls1_3 

编译openssl 1.1.1

安装依赖

sudo apt update sudo apt install build-essential checkinstall zlib1g-dev -y 

下载并解压缩源代码

wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz tar xf openssl-1.1.1a.tar.gz && rm openssl-1.1.1a.tar.gz cd openssl-1.1.1a 

配置、编译与安装

wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz tar xf openssl-1.1.1a.tar.gz && rm openssl-1.1.1a.tar.gz 

0

关于prefix和openssldir这俩参数

prefixopenssldir用于控制openssl安装路径。

1.0.2及之前的版本

一般来说不用指定prefix,如果prefix没指定,那么就会使用openssldir

如果未指定openssldir,那么openssldir的默认路径为/usr/local/ssl

1.1.0 及之后版本

我们改啦!应该同时指定prefixopenssldir

简单的办法就是同时指定为/usr/local/ssl

更新动态库

wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz tar xf openssl-1.1.1a.tar.gz && rm openssl-1.1.1a.tar.gz 

1

删除(备份)旧的openssl

wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz tar xf openssl-1.1.1a.tar.gz && rm openssl-1.1.1a.tar.gz 

2

把新的加入PATH

类似如下语句,或者做软链接

wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz tar xf openssl-1.1.1a.tar.gz && rm openssl-1.1.1a.tar.gz 

3

参考

https://www.howtoforge.com/tutorial/how-to-install-openssl-from-source-on-linux/

https://wiki.openssl.org/index.php/Compilation_and_Installation#PREFIX_and_OPENSSLDIR

https://imququ.com/post/enable-tls-1-3.html

https://halfrost.com/tls1-3_start/


转载请注明:逗比根据地 » 为Nginx开启tls 1.3支持,顺便编译openssl1.1.1a

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址