我最近将我的服务器重新安装到了 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 启用(恐怕我不知道如何在整个系统范围内执行此操作)和其他服务并允许更改密码的配置。
编辑你的 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“修复”的说明,尚未测试。