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

提供SSL证书后Python HTTPS请求仍报SSL错误的原因排查

解决公司代理插入SSL证书导致requests请求失败的问题

问题分析

你遇到的ssl.SSLError: [SSL] PEM lib错误,核心是用错了requests的参数:

  • cert参数用于指定客户端证书(服务器要求验证客户端身份时使用),而你需要让requests信任公司代理的根证书,应该用verify参数。
  • conda能正常使用该证书,是因为conda将其加入了信任证书列表,和requests的verify参数作用逻辑一致。

修正后的代码

把cert替换为verify参数即可:

import requests

url = "https://example.com"
response = requests.get(url, verify="/temp/certs/certificate.pem")

额外方案:全局配置证书

如果不想每次请求都手动指定证书,可通过两种方式全局配置:

  1. Windows环境变量方式
    在命令行执行以下命令后,运行Python脚本会自动使用该证书:
set REQUESTS_CA_BUNDLE=/temp/certs/certificate.pem
  1. requests全局配置
    在代码中替换默认CA证书路径,后续请求无需再指定verify:
import requests
from requests.utils import DEFAULT_CA_BUNDLE_PATH

requests.utils.DEFAULT_CA_BUNDLE_PATH = "/temp/certs/certificate.pem"

# 直接发起请求即可
response = requests.get("https://example.com")

错误原因补充

之前的PEM lib错误,是因为cert参数要求传入包含客户端证书和对应私钥的PEM文件(或分别指定证书与私钥路径),而你提供的是公司代理的根证书,不符合该参数的格式要求,导致PEM文件解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:00:33