相关配置:
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