certificate_verify_failed错误源于ssl证书验证失败,主因是系统时间不准、ssl模块异常或证书链无法回溯至信任根;应优先排查这三项,再考虑certifi升级或环境变量配置。

CERTIFICATE_VERIFY_FAILED 这类报错不是 pip 本身坏了,而是它在 HTTPS 握手阶段被系统 SSL 层拦下了——验证没通过,连接直接断掉。
CERTIFICATE_VERIFY_FAILED 的真实触发点
Python 的 ssl 模块在建立 HTTPS 连接时,会完整走一遍证书链校验流程:
- 检查服务器返回的证书是否由可信 CA 签发
- 验证证书是否在
Not Before和Not After时间范围内 - 核对证书里的
Subject Alternative Name是否匹配访问域名 - 尝试回溯整个证书链,直到找到系统信任的根证书
只要其中任意一环失败,就会抛出 SSLCertVerificationError,终端显示为 CERTIFICATE_VERIFY_FAILED。
常见实际卡点包括:
- 系统时间偏差超过几分钟(比如虚拟机休眠后未同步、CMOS电池失效)
- 企业防火墙做 HTTPS 中间人解密,插入了自签名根证书,但 Python 默认不认
- Windows 上 Python 安装包缺失
_ssl.pyd或系统 PATH 里混入了冲突的libssl-1_1-x64.dll - Linux/macOS 的 OpenSSL 证书路径未被 Python 正确识别(如
/etc/ssl/certs/ca-bundle.crt存在但未加载)
为什么 --trusted-host 有时也不管用?
这个参数只跳过「域名证书签名验证」,但不绕过时间检查、不修复证书链缺失、也不解决 _ssl 模块不可用的问题。
Python 3.14.2是Python编程语言在2025年12月5日发布的稳定版本,属于3.14系列的第二个维护更新。该版本包含了18项修复,重点解决了多进程、数据类及正则表达式等模块的回归问题,并修复了CVE-2025-12084等安全漏洞。此版本标志着自由线程模式(移除GIL)正式获得官方支持,是Python发展的重要里程碑。
典型失效场景:
- 错误写成
pip install --trusted-host pypi.org -i @#@#@#@#@#@#@#@#@#@0(--trusted-host必须紧跟在-i后面或放在命令最前) - 只加了
pypi.org,但下载实际走的是files.pythonhosted.org,后者证书独立,必须单独信任 - 系统时间错误导致证书“尚未生效”或“已过期”,此时信任哪个 host 都无效
ssl 模块根本不可用?先确认再折腾
运行以下命令,看是不是底层就断了:
python -c "import ssl; print(ssl.OPENSSL_VERSION)"
如果报 ModuleNotFoundError: No module named '_ssl',说明:
- Python 是精简版或损坏安装(尤其 Windows 常见)
-
_ssl.pyd文件确实不在Python\DLLs\目录下 - 或者 PATH 中有其他程序覆盖了 OpenSSL DLL,导致加载失败
这种情况下,调 --trusted-host 或换源全无意义——HTTPS 根本建不起来。
真正要优先排查的,永远是那三样:
系统时间是否准、ssl 模块能否导入、证书链是否能回溯到系统信任根。
其余配置都是在它们成立的前提下才起作用。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










