我想问一下是否有办法在 Ubuntu 20.04 上将 SSL 安全级别降低到 1,因为我收到:
141A318A:SSL routines:tls_process_ske_dhe:dh key too small
尝试卷曲网站时。
如果我添加参数,Curl 可以工作--ciphers 'DEFAULT:!DH'
,但是,我无法通过用 C# 编写的客户端应用程序获取网站。该网站在通过浏览器打开时也可以工作。
根据bugs.launchpad.net的说法,Ubuntu 团队故意设置了更高的 SSL 安全级别。
在几个地方,我遇到了更改CipherString = DEFAULT@SECLEVEL=2
为1
inopenssl.cnf
帮助的信息,但是我的配置文件根本没有这样的行,并且添加它没有任何效果。
我不控制网站服务器,因此无法更改其安全配置。
有任何想法吗?安装一些较旧的 openSSL 包会有所帮助吗?
提前致谢
编辑:至于对我的配置文件的更改,我在最后添加了以下内容:
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=1
输出openssl version -a
:
OpenSSL 1.1.1f 31 Mar 2020 built on: Mon Apr 20 11:53:50 2020 UTC
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,
--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-P_ODHM/openssl-1.1.1f=.
-fstack-protector-strong -Wformat -Werror=format-security
-DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE
-DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ
-DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT
-DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m
-DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM
-DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM
-DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG
-Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl" ENGINESDIR:
"/usr/lib/x86_64-linux-gnu/engines-1.1" Seeding source: os-specific
您的配置更改不太正确。您需要将其添加到配置文件的开头:
然后到最后:
请注意,如果您愿意,可以更改配置文件的本地副本,然后确保使用
OPENSSL_CONF
定义为指向配置文件位置的环境变量启动进程:通过这种方式,您可以进行更改而不必影响整个系统。
注意:要查找系统的 openssl.cnf 文件,请运行以下命令:
ls -l
在输出的目录上运行以openssl.cnf
根据需要通过该目录中的符号链接查看文件的位置。编辑
openssl.conf
文件:在顶部添加这一行:
并在最后添加这些行:
这个对我有用。:)
参考:当我尝试 CURL 网站时,我收到 SSL 错误
对于 Laravel,也运行
上面的两个解决方案让我感到困惑。
您只需要在 /usr/lib/ssl/openssl.cnf 中进行两处修改,如下所示:
对于剪切和粘贴:
更新:如果您通过在https://packages.ubuntu.com/search?keywords=openssl&searchon=names上下载从 deb 文件中提取默认配置,之前的答案似乎有效。
更新 2:实际上之前的答案对我不起作用,因为我使用了错误的配置文件,
[system_default_sect]
而不是[ssl_default_sect]
. 我从https://wiki.debian.org/ContinuousIntegration/TriagingTips/openssl-1.1.1复制粘贴似乎是一个错误。可以使用名称 system_default_sect 来与 Debian 保持一致,您只需要在任何地方都使用它而不是 ssl_default_sect。原答案:
之前的答案在 Ubuntu 20.04 上对我不起作用,所以我在 Ubuntu 上使用了我的 Debian LXC 容器中的配置文件并更改
SECLEVEL=2
为SECLEVEL=1
.我将文件另存为
/etc/ssl/openssl_custom.cnf
,然后在需要时使用上一个答案中共享的命令加载另一个配置文件:export OPENSSL_CONF=/etc/ssl/openssl_custom.cnf
这是对我有用的完整配置文件(您也可以通过在https://packages.debian.org/stable/openssl上下载 deb 文件来提取默认配置):
对于任何系统,在顶部添加
openssl.cnf
:并在结束时
openssl.cnf
:对于 Debian 添加:
对于 Ubuntu 20.04 添加: