WSL2 Ubuntu下curl/wget报SSL不安全旧版协商禁用错误求助
解决WSL2 Ubuntu下VPN/企业防火墙环境的SSL不安全旧版重协商错误
这个错误的核心原因是:新版OpenSSL(3.x及以上)默认禁用了不安全的旧版SSL重协商机制,而你的企业VPN或防火墙恰好依赖这种过时的协商逻辑——这和你导入根CA证书无关,属于握手层面的兼容问题。
下面是两种可行的解决办法:
临时生效(单命令/会话内有效)
在执行curl/wget前,通过环境变量临时让OpenSSL允许旧版重协商:
# 直接给目标命令套上环境变量 OPENSSL_CONF=<(printf "[openssl_init]\nssl_conf = ssl_sect\n[ssl_sect]\nsystem_default = system_default_sect\n[system_default_sect]\nOptions = UnsafeLegacyRenegotiation") curl -fsSL http://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
或者先设置环境变量,之后会话内的所有命令都生效:
export OPENSSL_CONF=<(printf "[openssl_init]\nssl_conf = ssl_sect\n[ssl_sect]\nsystem_default = system_default_sect\n[system_default_sect]\nOptions = UnsafeLegacyRenegotiation") # 接下来正常执行你的curl/wget命令即可 curl -fsSL http://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
永久生效(全局所有工具适用)
修改系统级OpenSSL配置,让所有依赖OpenSSL的工具默认允许旧版重协商:
- 打开配置文件:
sudo nano /etc/ssl/openssl.cnf
- 在文件最开头添加以下配置(如果已有
[openssl_init]段落,直接合并对应内容即可):
[openssl_init] ssl_conf = ssl_sect [ssl_sect] system_default = system_default_sect [system_default_sect] Options = UnsafeLegacyRenegotiation
- 保存退出后,无需重启系统,curl、wget、apt等工具都会自动应用这个配置。
注意
这个配置会降低SSL连接的安全性,仅在你完全信任当前企业VPN和防火墙环境的前提下使用。
内容的提问来源于stack exchange,提问作者user21387093
相关产品推荐
相关产品推荐

