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

Windows 2019下Python 3.9.7使用urllib出现SSL证书验证失败如何解决?

根因说明

你之前的操作存在两个适配范围问题:

  1. 环境变量REQUESTS_CA_BUNDLE仅作用于第三方requests库,Python标准库的urllib模块默认不会读取该配置
  2. 你安装的python-certifi-win32默认仅适配基于certifi的第三方请求库,标准库的ssl校验逻辑默认不会读取Windows系统证书存储,只会加载Python自带的根证书包。

解决方案

步骤1:获取Python默认根证书文件路径

执行以下Python代码获取内置根证书文件的绝对路径:

import certifi
print(certifi.where())

输出路径通常为C:\Python39\lib\site-packages\certifi\cacert.pem。

步骤2:追加信任证书到根证书包

将你已经导出的C:\tmp\repo1-maven-org-chain.pem文件内的所有证书内容,完整复制追加到上一步获取的cacert.pem文件末尾,保存文件即可,不要修改文件原有内容。

步骤3:全局生效配置(可选)

如果你需要所有Python请求都默认使用该配置,可新增系统环境变量:

  • 变量名:SSL_CERT_FILE
  • 变量值:上一步修改后的cacert.pem文件的绝对路径

该环境变量会被Python标准库ssl模块默认读取,全局生效。

步骤4:验证配置

执行以下代码验证修复效果:

import urllib.request
file_name, headers = urllib.request.urlretrieve("https://repo1.maven.org/fromsearch?filepath=org/antlr/antlr4-runtime/4.9.2/antlr4-runtime-4.9.2.jar")
print(file_name)

如果无报错输出临时文件路径,说明配置生效。


内容的提问来源于stack exchange,提问作者Michal Karm Babacek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:18:03