如何修复Python打包exe后的CERTIFICATE_VERIFY_FAILED错误?
解决CERTIFICATE_VERIFY_FAILED错误的方案
报错原因是重装Windows后,系统缺少目标HTTPS链接所需的根证书,或者打包exe时未包含必要的CA证书文件,导致urllib无法验证服务器证书有效性。
以下是几种可行的解决方法:
方法一:打包时包含CA证书(推荐)
- 找到Python环境中的CA证书文件:一般路径为
Python安装目录\Lib\site-packages\certifi\cacert.pem - 使用PyInstaller打包时,添加参数将证书文件打包进exe:
pyinstaller --onefile --add-data "cacert.pem;." your_script.py - 修改源码,让urllib使用打包后的证书文件:
import urllib.request import ssl import os # 获取打包后证书的路径 cert_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "cacert.pem") # 创建带证书的SSL上下文 context = ssl.create_default_context(cafile=cert_path) # 用上下文发起请求 response = urllib.request.urlopen(url, context=context)
方法二:临时跳过证书验证(不推荐,有安全风险)
如果只是临时应急,可以修改请求代码跳过证书验证,但这会让连接处于不安全状态:
import urllib.request import ssl # 创建不验证证书的上下文 context = ssl._create_unverified_context() response = urllib.request.urlopen(url, context=context)
方法三:安装系统缺失的根证书
- 打开浏览器访问目标HTTPS链接
- 当浏览器提示证书不安全时,查看证书详情,找到根证书并下载安装到Windows系统的“受信任的根证书颁发机构”中
- 重启exe程序尝试运行
内容的提问来源于stack exchange,提问作者user22502482
相关产品推荐
相关产品推荐

