在 Ubuntu 20.04 上启用 TLS 1.0 和 TLS 1.1

在 Ubuntu 20.04 上启用 TLS 1.0 和 TLS 1.1

我最近将我的服务器重新安装到了 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,因为我确实需要它来支持一些老用户的设备(主要是 Android 手机)。

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

非常感谢。


我尝试修改/etc/ssl/openssl.cnf(符号链接到/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

使用之前显示的命令时这不会导致任何差异openssl(我尝试使用“TLSv1”和“TLSv1.0”作为 MinProtocol)。

答案1

我终于找到了如何为 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";

变成

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";

答案2

对于 GnuTLS,如

https://discourse.ubuntu.com/t/default-to-tls-v1-2-in-all-tls-libraries-in-20-04-lts/12464/8

创建/etc/gnutls/config(目录和文件均丢失),内容如下:

[overrides]
default-priority-string = NORMAL

这足以修复进化中的以下错误(由于 pop3 服务器缺少 TLS-1.2 支持):

收到了包含非法或不受支持的版本的数据包

此链接中还有其他有关系统范围的 openSSL“修复”的说明,尚未测试。

相关内容