Python Requests SSL验证CA_BUNDLE配置及服务端证书使用问题
解决方案
证书格式说明
ssl.get_server_certificate() 方法返回的就是 PEM编码的X509证书字符串,不需要额外转换格式,你拿到的cert变量本身就是符合要求的内容,后续存为.pem或者.crt后缀的文件都可以被requests正常识别。
具体操作步骤
- 第一步:把获取到的证书内容写入本地文件
import ssl import requests # 替换为你的服务地址和端口 server = "your-server-domain.com" port = 443 # 获取服务端证书 cert_content = ssl.get_server_certificate((server, port)) # 写入本地PEM格式证书文件 cert_save_path = "./api_server_cert.pem" with open(cert_save_path, "w") as f: f.write(cert_content)
- 第二步:在requests请求中传入证书路径即可启用验证
# 替换为你的实际API地址 resp = requests.get("https://your-api-url.com/xxx", verify=cert_save_path)
CA_BUNDLE参数补充说明
CA_BUNDLE本质是一个包含多个受信任根证书、中间证书的PEM格式集合文件。如果你调用的是自签名证书的接口,直接传单个服务端证书的文件路径就满足验证要求;如果是公网可信CA签发的证书,也可以直接把verify参数设为True,requests会默认调用系统内置的CA根证书库完成校验。
内容的提问来源于stack exchange,提问作者Appden65
相关产品推荐
相关产品推荐

