Ubuntu 22.04在公司代理环境下的SSL问题求助
Ubuntu 22.04在公司代理环境下的SSL问题求助
嘿,我帮你分析下这个问题——你遇到的unsafe legacy renegotiation disabled错误,其实是Ubuntu 22.04自带的OpenSSL 3.0搞的鬼。OpenSSL 3.0默认禁用了不安全的旧版SSL重协商机制,但你们公司的代理大概率还在使用不支持安全重协商的老配置,所以浏览器(因为有自己的适配逻辑)能正常用,但系统级的命令行工具比如wget、curl就卡壳了。
下面给你几个一步步解决的方法:
1. 让OpenSSL允许旧版重协商
这是最核心的解决步骤,我们需要给OpenSSL加个自定义配置来启用这个选项(注意:这只是针对公司内网代理的临时妥协,别在公共网络环境这么用):
- 先创建一个存放配置片段的目录:
sudo mkdir -p /etc/ssl/openssl.cnf.d/
- 写入配置内容:
sudo tee /etc/ssl/openssl.cnf.d/legacy-renegotiation.cnf <<EOF openssl_conf = openssl_init [openssl_init] ssl_conf = ssl_sect [ssl_sect] system_default = system_default_sect [system_default_sect] Options = UnsafeLegacyRenegotiation EOF
临时测试用
如果只是想先验证下是否有效,可以在执行命令时临时指定这个配置:
OPENSSL_CONF=/etc/ssl/openssl.cnf.d/legacy-renegotiation.cnf wget -v https://ubuntu.com/server/docs/security-trust-store
全局永久生效
要让所有命令行工具都自动用这个配置,把路径加到系统环境变量里:
echo "OPENSSL_CONF=/etc/ssl/openssl.cnf.d/legacy-renegotiation.cnf" | sudo tee -a /etc/environment
之后重启系统,或者执行source /etc/environment让配置立刻生效。
2. 别忘了设置命令行代理
浏览器可能自动获取了公司的代理设置,但命令行工具不会,所以得手动配置:
export http_proxy=http://你的代理地址:端口号 export https_proxy=http://你的代理地址:端口号
如果代理需要账号密码,格式就是http://用户名:密码@代理地址:端口号。要是想永久生效,把这两行加到~/.bashrc或者/etc/profile里就行。
3. 再确认下证书是否真的导入成功
你之前的证书导入步骤是对的,但可以再检查一遍:
ls /etc/ssl/certs | grep myorg
要是能看到一个以哈希值命名、指向myorg.crt的链接文件,说明导入没问题;如果看不到,就重新执行update-ca-certificates -f强制更新一下。
做完这些,再试试wget或者curl,应该就能正常建立SSL连接了。
备注:内容来源于stack exchange,提问作者Cladius Fernando
相关产品推荐
相关产品推荐

