尽管在 NGINX 配置 (certbot --nginx) 中启用了 TLS v1.3,但该版本未激活

尽管在 NGINX 配置 (certbot --nginx) 中启用了 TLS v1.3,但该版本未激活

我最近用 建立了一个网站certbot --nginx -d <domain>。在 中/etc/letsencrypt/options-ssl-nginx.conf,我将 TLSv1.3 添加到ssl_protocols指令中。但是,当我访问该网站(Chrome 68)时,安全选项卡显示 TLSv1.2。我使用 ssllabs.com 测试了该网站,它也显示仅启用了 TLS 版本 1.0-1.2。

我没有看到journalctl -u nginx.service | grep -i tls或中的任何错误grep -i tls /var/log/nginx/*.log

我该如何解决此问题?我检查了所有配置文件和所有日志文件,但未找到问题的根源(或有关问题的任何信息)。

软件信息:

  • certbot 0.23.0
  • nginx 版本:nginx/1.14.0(Ubuntu)
  • OpenSSL 1.1.0g 2017 年 11 月 2 日
  • Ubuntu 18.04
  • Linux 4.15.0-20-通用 x86_64

站点配置(由 生成certbot):https://hastebin.com/oragojozol.nginx

/etc/letsencrypt/options-ssl-nginx.confhttps://hastebin.com/cepalomisi.nginx

答案1

OpenSSL 1.1.0g 2017 年 11 月 2 日

我甚至没有看你正在做的其他事情,但 OpenSSL 1.1.0 根本不支持 TLS 1.3。TLS 1.3 仅从 OpenSSL 1.1.1 开始支持。请参阅将 TLS1.3 与 OpenSSL 结合使用了解更多信息。

答案2

我花了半个小时的时间思考为什么我的 Ubuntu Eoan(N 1.16.5,OpenSSL 1.1.1c)上的 Nginx 仍然可以通过 TLSv1.2 运行,并在网上搜索可能的原因,最后发现检查 Certbot 文件的说明特别有用。

查看/etc/letsencrypt/options-ssl-nginx.conf。它包含以下行:

ssl_protocols TLSv1.0 TLSv1.1 TLSv1.2;

因为这个文件(通常)处于includeserver级别,所以它优先于您在http块级别设置的任何内容。

ssl_protocols如果您的块中有http,那么只需像我一样从文件中删除不需要的行即可。然后我的设置在重新加载后生效。

# /etc/nginx/nginx.conf
ssl_protocols TLSv1.2 TLSv1.3;
root@iBug-Server:/etc/nginx # nginx -tq && nginx -s reload
# Or use `systemctl reload nginx.service`

答案3

在 Ubuntu 发布其默认更新之前,您可以通过最近更新的 Ondrej Sury PPA 使用 TLSv1.3。

基本上,您需要添加他的 PPA nginx 和 nginx-qa 存储库,删除默认 nginx 并安装他的 PPA nginx 和 openssl,如下所示:

sudo add-apt-repository ppa:ondrej/nginx-mainline
sudo add-apt-repository ppa:ondrej/nginx-qa
sudo apt-get update; #This is not needed in Ubuntu 18.04
sudo apt-get -y remove nginx; #If you already installed default Nginx
sudo apt-get -y install nginx openssl

我解释了手动安装 openssl 1.1.1 的步骤如何锻造但使用上面提到的 PPA 更容易、更安全。

相关内容