使用Python Requests库遇到SSL错误的解决求助
解决Python requests库的SSL证书验证失败问题
1. 指定本地CA证书文件
如果目标API使用自签名证书或自定义CA,直接指定CA证书文件路径即可:
import requests url = 'https://example.com/api/data' # 替换为你的CA证书文件路径(支持.pem或.crt格式) response = requests.get(url, verify='/path/to/your/ca-cert.pem') print(response.text)
2. 让requests使用系统CA证书存储
有时Python的certifi包与系统CA证书不同步,可尝试让requests调用系统级证书:
- Linux/macOS:先设置环境变量,再运行脚本:
export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt python your_script.py - Windows:通过
C:\Windows\System32\certmgr.msc导出系统CA证书,设置环境变量REQUESTS_CA_BUNDLE指向该证书文件路径,再执行脚本。
3. 检查目标API的证书链完整性
用openssl命令验证API的证书链是否完整:
openssl s_client -connect example.com:443 -showcerts
如果输出显示证书链缺失,要么联系API提供者修复证书配置,要么手动下载缺失的中间证书,合并到你的CA证书文件后再使用。
4. 排查verify=False不生效的原因
如果设置verify=False仍报错,可能是以下情况:
- 代码中全局Session的设置覆盖了单个请求参数,比如:
session = requests.Session() session.verify = True # 该设置会覆盖单个请求的verify=False - 环境变量
REQUESTS_CA_BUNDLE或CURL_CA_BUNDLE已被设置,导致verify=False被忽略,可暂时取消这些环境变量后再测试。
内容的提问来源于stack exchange,提问作者HarshVardhan Choudhary
相关产品推荐
相关产品推荐

