使用requests请求报SSLError但openssl验证正常问题求助
解决Docker容器中Requests SSL证书验证失败问题
针对你遇到的requests.exceptions.SSLError错误,即便openssl s_client验证正常,仍可通过以下方法排查解决:
确认Requests依赖的证书池
Requests默认使用certifi库提供的证书存储,而非系统证书池。在容器内执行以下命令查看证书路径:python -c "import certifi; print(certifi.where())"检查该路径下的证书文件是否包含GlobalSign根证书。若缺失,可将宿主机的系统证书(如
/etc/ssl/certs/ca-certificates.crt)复制到容器内,然后在请求中指定证书路径:import requests response = requests.get('https://redmine.promomed.pro/issues/6081.json?include=journals', verify='/path/to/your/ca-certificates.crt')或设置环境变量让Requests全局使用该证书:
export REQUESTS_CA_BUNDLE=/path/to/your/ca-certificates.crt更新容器内系统证书存储
根据容器镜像的基础系统执行证书更新:- Debian/Ubuntu系镜像:
apt update && apt install -y ca-certificates && update-ca-certificates - Alpine系镜像:
apk add --no-cache ca-certificates && update-ca-certificates
更新后重启你的Python应用,让Requests优先使用系统证书池。
- Debian/Ubuntu系镜像:
排查代理干扰
若容器配置了HTTP/HTTPS代理,代理可能会替换SSL证书导致验证失败。尝试临时关闭代理后重新发起请求,确认是否是代理问题。
内容的提问来源于stack exchange,提问作者maskalev
相关产品推荐
相关产品推荐

