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

Windows系统下Python pip SSL证书验证失败问题求助

Windows下pip SSL证书验证失败(自签名证书错误)的根源排查

问题背景

两天前起,Windows系统中无论是原生Python还是3.9/3.10/3.11版本的虚拟环境,执行pip安装包时均触发以下错误:

ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/da/6d/1235da14daddaa6e47f74ba0c255358f0ce7a6ee05da8bf8eb49161aa6b5/pandas-1.5.3-cp311-cp311-win_amd64.whl (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:992)')))

已尝试以下方案但均无效:

  • 下载并配置cacert.pem到SSL_CERT_FILE环境变量
  • 升级pip至最新版本
  • 添加--trusted-host参数信任PyPI域名
  • 更新certifi CA证书包
  • 使用--no-verify参数禁用SSL验证

核心问题根源

错误提示中的「self signed certificate」是关键,说明网络请求被中间设备/软件拦截,并替换成了自签名证书,而非目标服务器的真实证书。常见原因包括:

  1. 企业内网代理/防火墙:公司网络通常部署SSL拦截设备,生成自签名证书监控HTTPS流量,导致pip验证证书失败。
  2. 杀毒软件/安全工具的SSL扫描:部分杀毒软件的「SSL流量扫描」功能会插入自签名证书,拦截所有HTTPS请求。
  3. 系统级代理工具:全局代理工具(如VPN、代理客户端)开启SSL解密功能时,也会生成自签名证书。
  4. 环境变量未正确生效:即使设置了SSL_CERT_FILE,若终端/IDE未完全重启,或虚拟环境未继承该变量,pip依然会使用旧的CA证书路径。

排查与解决步骤

  1. 临时关闭拦截类软件/代理
    • 关闭所有VPN、代理工具,禁用杀毒软件的SSL扫描/实时防护功能,再尝试pip安装。如果问题解决,说明是这类工具导致的。
  2. 验证CA证书路径
    • 执行以下命令查看当前pip使用的CA证书路径:
      python -c "import certifi; print(certifi.where())"
      
    • 确认该路径是否与你设置的SSL_CERT_FILE一致,若不一致,说明环境变量未生效或pip未使用certifi包的证书。
  3. 强制指定CA证书
    • 在pip命令中直接指定下载的cacert.pem路径:
      pip install pandas --cert "C:\path\to\your\cacert.pem"
      
  4. 配置pip全局信任
    • 在用户目录下创建pip\pip.ini文件(路径:%USERPROFILE%\pip\pip.ini),添加以下内容:
      [global]
      trusted-host = pypi.org
                     files.pythonhosted.org
      cert = C:\path\to\your\cacert.pem
      
    • 保存后重启终端,pip会自动使用这些配置。
  5. 检查系统证书存储
    • 打开Windows「证书管理器」(运行certmgr.msc),查看「受信任的根证书颁发机构」中是否有未知的自签名证书,若有,可将其导出后添加到pip的CA证书包中。

内容的提问来源于stack exchange,提问作者notarealgreal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:07:46