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

使用Python Requests带客户端证书请求Google遇SSL验证错误求助

解决requests验证Google证书失败的问题

错误原因

你用openssl下载的只是Google服务器的叶子证书,但SSL证书验证需要完整的证书链(叶子证书 + 中间证书 + 根证书)。只提供叶子证书的话,Python无法找到颁发它的上级证书,所以会抛出unable to get local issuer certificate错误。

正确解决方法

方法1:下载完整的证书链

修改你的openssl命令,加上-showcerts参数,这样会输出整个证书链的所有证书:

echo | openssl s_client -servername google.com -connect google.com:443 -showcerts | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > google_full_chain.crt

然后用这个完整证书链文件发起请求:

import requests
requests.get('https://google.com', verify='/path/to/google_full_chain.crt')

方法2:直接使用系统默认CA证书库

其实不需要手动下载证书,requests默认会使用系统内置的CA根证书来验证服务器证书,直接去掉verify参数或者设为True即可:

import requests
requests.get('https://google.com')

这个方法更可靠,因为系统CA证书会自动更新,避免手动下载的证书过期或缺失。

额外澄清:客户端证书 vs 服务器证书验证

你提到的“搭配客户端证书”和当前操作是两个概念:

  • verify参数:用来验证服务器的证书是否合法;
  • cert参数:当服务器要求客户端提供身份证书时使用,格式是('客户端证书文件路径', '客户端私钥文件路径'),比如:
    requests.get('https://example.com', cert=('/path/client.crt', '/path/client.key'))
    

如果只是正常访问Google这类公开网站,不需要提供客户端证书,只需要确保服务器证书验证通过即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:30:58