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

curl可正常请求但Python requests调用报SSLError是什么原因?

问题触发原因及解决方案

curl可以正常执行说明服务端网络连通、证书本身有效性不存在问题,报错是Python侧的证书校验逻辑不通过导致,具体触发原因和解决方案如下:

触发原因

  1. CA证书格式不符合标准PEM规范
    你提供的证书内容为---BEGIN CERTIFCATE---- SOMERANDOMSTRING ---END CERTIFICATE----,存在三处不符合标准的问题:
  • 头部拼写错误:正确标识为CERTIFICATE,你给出的内容少了字母I,写成了CERTIFCATE
  • 分隔符短横线数量错误:标准PEM格式的证书首尾分隔符为5个短横线,你给出的内容开头只有3个、结尾有4个,数量不匹配
  • 内容排版错误:证书内容和首尾分隔符不能放在同一行,必须换行分隔
    curl对PEM格式的容错性远高于Python底层的ssl模块,不规范的格式curl可以自动兼容解析,但Python ssl模块会直接判定证书无效,抛出校验失败错误。
  1. Python进程无证书文件读取权限
    如果运行curl命令的用户和运行Python脚本的用户不是同一身份,Python进程可能没有/var/lib/myapp/server-ca.crt文件的读取权限,无法读取到有效证书内容也会触发校验失败。

解决方案

  1. 首先修正CA证书的PEM格式,调整后格式如下:
-----BEGIN CERTIFICATE-----
SOMERANDOMSTRING
-----END CERTIFICATE-----
  1. 给Python运行用户分配证书文件的可读权限,可执行以下命令:
    chmod +r /var/lib/myapp/server-ca.crt
    你也可以在Python代码中先增加读取测试,确认证书可以正常读取:
with open("/var/lib/myapp/server-ca.crt", "r") as f:
    print(f.read())
  1. 如果你需要临时测试确认问题根源,可以将verify参数设置为False跳过证书校验(该配置存在安全风险,生产环境禁止使用):
response = requests.get(url=url, headers=headers, verify=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:36:07