我想问一下是否有办法将 Ubuntu 20.04 上的 SSL 安全级别降低到 1,因为我收到:
141A318A:SSL routines:tls_process_ske_dhe:dh key too small
当尝试卷曲网站时。
如果我添加--ciphers 'DEFAULT:!DH'
参数,Curl 就可以正常工作,但是我无法通过用 C# 编写的客户端应用程序获取网站。通过浏览器打开时,该网站也可以正常工作。
根据bugs.launchpad.netUbuntu 团队特意设置了更高的 SSL 安全级别。
在几个地方我碰到了这样的信息,改为CipherString = DEFAULT@SECLEVEL=2
有1
帮助openssl.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
答案1
您的配置更改不太正确。您需要将其添加到配置文件的开头:
openssl_conf = default_conf
然后就这样结束了:
[ default_conf ]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT:@SECLEVEL=1
请注意,如果您愿意,您可以更改配置文件的本地副本,然后确保您的进程启动时OPENSSL_CONF
定义的环境变量指向您的配置文件的位置:
export OPENSSL_CONF=/path/to/my/openssl.cnf
这样,您就可以进行更改而不会影响整个系统。
注意:要找到系统的 openssl.cnf 文件,请运行以下命令:
% openssl version -d
ls -l
在输出的目录上运行,以openssl.cnf
根据需要通过该目录中的符号链接查看文件的位置。
答案2
编辑openssl.cnf
文件/etc/ssl
:
sudo nano /etc/ssl/openssl.cnf
在顶部添加此行:
openssl_conf = openssl_init
并在最后添加以下几行:
[openssl_init]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
CipherString = DEFAULT@SECLEVEL=1
这个对我有用。 :)
对于 Laravel,还可以运行
sudo service php7.4-fpm restart
答案3
上述两个解决方案让我感到困惑。
您只需要在 /usr/lib/ssl/openssl.cnf 中进行两块修改,如下面 diff 中所述:
rcsdiff ./openssl.cnf
===================================================================
RCS file: ./openssl.cnf,v
retrieving revision 1.1
diff -r1.1 ./openssl.cnf
13a14,15
> openssl_conf = default_conf
>
350a353,362
>
> [default_conf]
> ssl_conf = ssl_sect
>
> [ssl_sect]
> system_default = system_default_sect
>
> [system_default_sect]
> MinProtocol = TLSv1.2
> CipherString = DEFAULT@SECLEVEL=1
对于剪切和粘贴:
openssl_conf = default_conf
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=1
答案4
对于任何系统,在顶部添加openssl.cnf
:
openssl_conf = default_conf
并在结尾处openssl.cnf
:
对于 Debian 添加:
[system_default_sect] MinProtocol = TLSv1.0 CipherString = DEFAULT@SECLEVEL=2
对于 Ubuntu 20.04,添加:
[system_default_sect] MinProtocol = TLSv1 #important ! CipherString = DEFAULT@SECLEVEL=2 # in my case works good with very old software