Ubuntu 22.04下curl指定TLSv1.2仍遇SSLv3握手失败求助
Ubuntu 22.04下curl强制TLSv1.2仍报SSLv3握手失败,需禁用SSLv3
我们在Ubuntu 22.04机器上使用curl连接已禁用SSLv3的服务器时,即使强制curl仅使用TLSv1.2,仍出现SSLv3握手失败错误。当前curl版本为7.81.0,OpenSSL版本为3.0.2,Windows上的curl 8.5.0可正常连接该服务器。服务器团队建议在本机禁用SSLv3,以下是操作方法:
问题复现的curl命令及输出
root@xxxxxxxx:~# curl -v --tlsv1.2 --tls-max 1.2 https://xxxxxxxxxx:xxxx Trying xxx.xxx.xxx.xxx:xxxx... Connected to xxxxxxxxxx (xxx.xxx.xxx.xxx) port xxxx (#0) ALPN, offering h2 ALPN, offering http/1.1 CAfile: /etc/ssl/certs/ca-certificates.crt CApath: /etc/ssl/certs TLSv1.0 (OUT), TLS header, Certificate Status (22): TLSv1.2 (OUT), TLS handshake, Client hello (1): TLSv1.2 (IN), TLS header, Unknown (21): TLSv1.2 (IN), TLS alert, handshake failure (552): error:0A000410:SSL routines::sslv3 alert handshake failure Closing connection 0 curl: (35) error:0A000410:SSL routines::sslv3 alert handshake failure
禁用SSLv3的操作方法
方法一:全局修改OpenSSL配置(推荐)
- 打开OpenSSL全局配置文件:
sudo nano /etc/ssl/openssl.cnf - 找到或添加
[system_default_sect]段落,添加以下配置:
该配置会强制OpenSSL最低使用TLSv1.2,直接排除SSLv3及更低版本的协议支持。[system_default_sect] MinProtocol = TLSv1.2 CipherString = DEFAULT:@SECLEVEL=2 - 保存文件并退出(按
Ctrl+O回车确认,再按Ctrl+X),修改立即生效,无需重启系统。
方法二:单独给curl命令添加参数(临时方案)
如果不想全局修改,可在curl命令中额外指定禁用SSLv3的加密套件:
curl -v --tlsv1.2 --tls-max 1.2 --ciphers 'DEFAULT:!SSLv3' https://xxxxxxxxxx:xxxx
验证修改
重新运行之前的curl命令,若握手成功则说明修改生效。
内容的提问来源于stack exchange,提问作者zchoudri
相关产品推荐
相关产品推荐

