Python requests 请求报 SSLError 怎么解决?

requests 报 SSLError 的常见原因:证书验证失败、证书链不完整、本地 CA 过期、代理拦截。解决方案:更新 certifi、指定 CA 包、verify=False 临时跳过(有安全风险)。本文逐一排查。

最佳实践
Python requests 请求报 SSLError 怎么解决?封面

方案一:更新 CA 证书包(先试这个)

pip install -U certifi requests

本地 CA 列表过期是证书验证失败的最常见原因。

方案二:指定 CA 证书

import requests

# 使用企业 CA 或自签名证书
requests.get('https://internal.example.com', verify='/path/to/ca-bundle.crt')

方案三:跳过验证(仅临时调试)

requests.get('https://example.com', verify=False)

会输出 InsecureRequestWarning安全风险:跳过验证意味着无法防御中间人攻击,生产环境禁用。关闭警告:

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

其他可能原因

  • 服务器证书链不完整:服务器没配置中间证书(浏览器能容忍,Python 不能),让服务端修;
  • 协议版本过旧:老服务器只支持 TLS 1.0/1.1,新版 OpenSSL 默认拒绝,需服务端升级;
  • 系统时间错误:证书验证依赖时间,date 命令确认系统时间准确;

观测云对照

观测云 DataKit 上报数据默认走 HTTPS,企业内部 CA 场景可在 DataKit 配置中指定 CA 证书路径,保证私有化部署的证书验证正常。

常见问题(FAQ)

A:本地找不到签发者的根证书——更新 certifi,或服务器缺中间证书(用 SSL Labs 检测服务器)。

Q:浏览器访问正常,requests 报错?
A:浏览器有自己的证书缓存且会补全中间证书,Python 严格按本地 CA 验证,差异正常。

Q:Docker 容器里报 SSL 错误?
A:精简镜像(alpine 等)可能缺 ca-certificates 包,apk add ca-certificatesapt install ca-certificates

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台