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

使用Python Requests调用内部API遇SSL证书验证失败求助

问题原因分析
  • 内部API的SSL证书更换为自签名证书,而你的本地环境未信任该证书,导致验证失败
  • 此前正常运行的环境可能存在过证书信任配置(比如手动添加过证书、代码里跳过验证),后续环境变更(Python/requests版本升级、系统证书存储更新、网络代理调整)导致原有配置失效
  • 网络层新增了代理设备,代理拦截请求后替换了证书,且该代理证书未被本地信任
解决方法

1. 临时跳过证书验证(仅用于测试/内部可信场景)

在请求中添加verify=False参数关闭SSL验证:

x1 = requests.post(url, json=data, headers=headers, verify=False)

如果出现InsecureRequestWarning警告,可添加代码禁用:

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

# 禁用不安全请求警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
x1 = requests.post(url, json=data, headers=headers, verify=False)

⚠️ 注意:此方法会关闭SSL安全校验,禁止在生产环境使用。

2. 信任自签名证书(推荐的合规方案)

方法A:请求中指定证书文件

将内部API的自签名证书文件(格式为PEM,比如internal_api_cert.pem)保存到本地,请求时指定证书路径:

x1 = requests.post(url, json=data, headers=headers, verify='/path/to/internal_api_cert.pem')

方法B:添加到系统信任根存储

将证书添加到操作系统的根证书信任列表:

  • Windows:打开「证书管理器」,导入证书到「受信任的根证书颁发机构」
  • Linux:将证书复制到/usr/local/share/ca-certificates/,执行update-ca-certificates命令
  • macOS:打开「钥匙串访问」,将证书添加到「系统」钥匙串,并设置为「始终信任」

3. 排查环境变更因素

  • 检查Python、requests库版本是否有更新,新版本可能强化了证书验证逻辑
  • 确认网络环境是否新增代理,若有,需配置requests使用代理并信任代理证书,或联系运维调整代理规则放行该API请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:15:50