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

Python Requests库问题:遭遇SSL证书验证失败错误

解决requests库"SSL certificate verify failed"错误

可能的原因及对应解决方案

1. 服务器使用私有CA签发证书

如果目标服务器的证书由自定义/私有CA签发,certifi默认的根证书库不会包含该CA证书,导致验证失败。

解决方案:
将私有CA的证书文件(.pem或.crt格式)路径传给verify参数:

import requests

url = 'https://example.com/api'
# 替换为你的私有CA证书路径
response = requests.get(url, verify='/path/to/private_ca.pem')

print(response.text)

2. requests未正确读取系统根证书

certifi的证书库可能与操作系统的根证书存储不一致,导致部分系统信任的证书无法被requests识别。

解决方案:
使用系统默认的SSL上下文,强制requests加载系统根证书:

import requests
import ssl

url = 'https://example.com/api'
context = ssl.create_default_context()  # 自动加载系统根证书
response = requests.get(url, verify=context)

print(response.text)

3. 网络代理替换了证书(企业环境常见)

企业网络中的代理服务器通常会替换HTTPS请求的证书,若代理的CA证书未被信任,会触发验证错误。

解决方案:
获取IT部门提供的代理CA证书,在请求中指定证书并配置代理:

import requests

url = 'https://example.com/api'
proxies = {
    'https': 'http://your-enterprise-proxy:port'
}
# 替换为代理CA证书路径
response = requests.get(url, proxies=proxies, verify='/path/to/proxy_ca.pem')

print(response.text)

4. 服务器证书链不完整

服务器未正确配置完整的证书链(缺少中间证书),导致客户端无法验证证书有效性。

解决方案:
用openssl命令检查证书链状态:

openssl s_client -connect example.com:443 -showcerts

若输出显示Verify return code: 20 (unable to get local issuer certificate),说明证书链不完整,需联系服务器管理员补充中间证书。

注意事项

  • 不要在生产环境使用verify=False,会导致请求完全暴露在中间人攻击风险下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:35:18