You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL Ubuntu 22.04.3 LTS执行add-apt-repository遇CERTIFICATE_VERIFY_FAILED错误求助

WSL Ubuntu 22.04.3 LTS执行add-apt-repository遇CERTIFICATE_VERIFY_FAILED错误求助

嗨,我之前在公司网络下用WSL的时候也碰到过一模一样的问题——因为TLS拦截会替换掉目标站点的证书,而系统默认的CA信任库不认识这个拦截证书,所以add-apt-repository(它是基于Python写的)就会抛出证书验证失败的错误。先把你给出的错误栈整理完整些:

Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 364, in <module>
    sys.exit(0 if addaptrepo.main() else 1)
  File "/usr/bin/add-apt-repository", line 347, in main
    shortcut = handler(source, **shortcut_params)
  File "/usr/lib/python3/dist-packages/softwareproperties/shortcuts.py", line 40, in shortcut_handler
    return handler(shortcut, **kwargs)
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 82, in __init__
    if self.lpppa.publish_debug_symbols:
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 120, in lpppa
    self._lpppa = self.lpteam.getPPAByName(name=self.ppaname)
  # 后续核心错误为ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)

给你几个实用的解决办法,按安全程度排序:

方法一:导入拦截CA证书到系统信任库(最安全推荐)

这是从根源解决的办法,让系统信任你的TLS拦截证书:

  • 先找公司IT要到你们网络的TLS拦截CA证书(一般是.pem或.crt格式,也可以从本地浏览器导出,注意选择PEM格式)
  • 把证书复制到WSL的系统证书目录:
    sudo cp your-intercept-cert.crt /usr/local/share/ca-certificates/
    
  • 更新系统的CA信任缓存:
    sudo update-ca-certificates
    

完成后再运行add-apt-repository,应该就能正常验证证书了。

方法二:临时跳过证书验证(仅应急使用,不安全)

如果只是临时需要执行操作,不想折腾证书,可以给Python设置环境变量跳过HTTPS证书验证——因为add-apt-repository会遵守这个Python环境变量:

  • 执行命令前先设置变量,连带运行目标命令:
    export PYTHONHTTPSVERIFY=0 && sudo add-apt-repository ppa:你的PPA地址
    
  • 注意:这个操作会让当前会话里所有Python的HTTPS请求都跳过证书验证,有安全风险,用完记得取消:
    unset PYTHONHTTPSVERIFY
    

方法三:配置APT的代理与证书(适用于需要代理的网络环境)

如果你的网络还需要代理才能访问外部,同时要给APT配置代理和信任证书:

  • 创建APT的代理配置文件:
    sudo nano /etc/apt/apt.conf.d/99proxy
    
  • 在文件里添加代理地址和证书路径(替换成你实际的代理地址和证书路径):
    Acquire::http::Proxy "http://你的代理地址:端口/";
    Acquire::https::Proxy "http://你的代理地址:端口/";
    Acquire::https::CaInfo "/usr/local/share/ca-certificates/你的拦截证书.crt";
    
  • 保存退出nano(按Ctrl+O回车确认保存,再按Ctrl+X退出),然后更新APT缓存:
    sudo apt update
    

之后再运行add-apt-repository就会走代理并信任拦截证书了。

备注:内容来源于stack exchange,提问作者Enki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 15:19:40