尽管 Nginx 配置中未启用 TLS v1.3,但该版本仍处于活动状态

尽管 Nginx 配置中未启用 TLS v1.3,但该版本仍处于活动状态

相关配置:

ssl_protocols TLSv1.2;

当我在 SSL Labs 测试服务器时,测试报告 TLS 1.3 可用,并列出默认密码和其他结果,就好像TLSv1.3包含在我的配置中一样。

Ubuntu Server 18.04.1,OpenSSL 1.1.1 2018 年 9 月 11 日,使用 OpenSSL 1.1.0g 构建的 Nginx 1.14.1

我如何禁用 TLSv1.3?

答案1

使用 OpenSSL 1.1.0g 构建的 Nginx 1.14.1

OpenSSL 1.1.0 不支持 TLS 1.3

Ubuntu Server 18.04.1,OpenSSL 1.1.1 2018 年 9 月 11 日

Ubuntu 18.04.1 附带 OpenSSL 1.1.0g,而不是 OpenSSL 1.1.1。

我猜想您以某种方式在系统上安装了 OpenSSL 1.1.1,从而替换了操作系统自带的版本。由于 nginx 使用共享库,因此即使它是针对 OpenSSL 1.1.0g 编译的,它也会使用您安装的 OpenSSL 1.1.1。

nginx 中的选项ssl_protocols TLSv1.2;不是通过仅启用 TLS 1.2 来实现的。相反,所有有用的协议都默认启用,而将其限制为 TLS 1.2 实际上意味着除 TLS 1.2 之外的所有内容都将被禁用。但是,它只能禁用它知道的协议,并且鉴于 nginx 是针对不支持 TLS 1.3 的 OpenSSL 版本进行编译的,它不知道 TLS 1.3 的存在,也无法禁用它,这意味着它保持启用状态。

答案2

看了下评论:

显然,由于我使用 sury.org PHP PPA,因此 OpenSSL 版本安装在默认存储库上。

要修复此问题,您还需要安装 sury.org repo 版本的 nginx。在撰写本文时,此版本的 nginx 是使用 openssl 1.1.1b 和 TLS 1.3 构建的,如果我们使用替换默认 ubuntu openssl 包的 ondrej php7.3 lib,则需要这两个版本。

我必须做同样的事情,因为我在 chrome 中收到了 ERR_SSL_VERSION_INTERFERENCE ssl 错误。

前:

sudo nginx -V
built with OpenSSL 1.1.0g  2 Nov 2017 (running with OpenSSL 1.1.1b  26 Feb 2019)

运行以下命令:

sudo add-apt-repository ppa:ondrej/nginx
sudo apt update
sudo apt remove nginx
sudo apt install nginx

后:

sudo nginx -V
built with OpenSSL 1.1.1  11 Sep 2018 (running with OpenSSL 1.1.1b  26 Feb 2019)

完整说明在这里:

https://www.linuxbabe.com/ubuntu/enable-tls-1-3-nginx-ubuntu-18-10-18-04-16-04-14-04

相关内容