在 Ubuntu 20.04 上启用 TLS 1.0 和 TLS 1.1

rei*_*bre 14 nginx openssl tls 20.04

我最近将我的服务器重新安装到 Ubuntu 20.04。

几天后,我接到了一个支持电话,我注意到我的 Web 服务器没有提供 TLS v1.0 和 v1.1 nginx。配置很好并且明确启用了 TLSv1 和 TLSv1.1。nginx 的日志中什么也没有出现……

后来,我注意到 TLS 1.0 或 1.1 似乎不再适用。

openssl s_client -tls1 -connect matrix.org:443不起作用(它失败了no protocols available),而它在 Ubuntu 18.04 下起作用。

这个问题的其他人不再能够连接到不支持 TLS v1.2 的 MySQL 服务器。

我开始怀疑这可能是对 Ubuntu 的有意更改,但我在发行说明中找不到任何内容,而且我也无法找到如何重新启用 TLS v1.0 和 v1.1,因为我真的需要它来支持一些老用户的设备(主要是安卓手机)。

如何重新启用 TLS v1.0 和/或 v1.1?

非常感谢。


我尝试修改/etc/ssl/openssl.cnf(符号链接到 by /usr/lib/ssl/openssl.cnf)来添加

openssl_conf = default_conf

[ default_conf ]
ssl_conf = ssl_sect

[ ssl_sect ]
system_default = system_default_sect

[ system_default_sect ]
MinProtocol = TLSv1
DEFAULT@SECLEVEL = 1
Run Code Online (Sandbox Code Playgroud)

使用openssl之前显示的命令时,这并没有导致任何差异(我尝试将 'TLSv1' 和 'TLSv1.0' 作为 MinProtocol)。

rei*_*bre 8

我终于找到了如何启用 nginx(恐怕我不知道如何在系统范围内执行此操作)和其他具有允许更改密码的配置的服务。

来源: man ciphers.1ssl

编辑您的 nginx 配置并修改您的密码列表以添加伪密码@SECLEVEL=1

例子:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
Run Code Online (Sandbox Code Playgroud)

变成

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
# seclevel for TLS 1.0 and 1.1
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:@SECLEVEL=1";
Run Code Online (Sandbox Code Playgroud)