使用python_graphql_client创建GraphQL客户端遇SSL证书验证失败求助
解决python_graphql_client的SSL证书验证失败问题
你遇到的SSLCertVerificationError是因为Python无法验证目标GraphQL服务器的SSL证书,找不到对应的本地颁发机构证书。用verify=False确实能临时绕过,但存在严重安全风险,以下是正确配置自有证书的方法:
1. 直接指定证书文件路径
将你持有的证书文件(建议用包含完整证书链的.pem文件)的路径传入verify参数,替换掉verify=False:
修改Init方法中的客户端初始化代码:
# 替换为你的证书文件绝对路径或相对路径 cert_path = "/absolute/path/to/your/certificate.pem" self.gqlClient = GraphqlClient(endpoint=GRAPHQL_SERVER_ENDPOINT, verify=cert_path, headers=header)
2. 确保证书链完整
如果指定证书后仍报错,大概率是证书缺少中间CA证书。需要将服务器证书、中间CA证书、根CA证书按顺序合并到同一个.pem文件中:
- 打开文本编辑器,先粘贴服务器证书内容
- 接着粘贴所有中间CA证书内容
- 最后粘贴根CA证书内容
- 保存为新的
.pem文件后再传入verify参数
3. 系统级信任配置(可选)
如果不想在代码中指定证书路径,可以将证书添加到系统或Python的CA信任库:
- Linux:将证书复制到
/etc/ssl/certs/目录,执行sudo update-ca-certificates更新信任列表 - Windows:双击证书文件,选择导入到「本地计算机」的「受信任的根证书颁发机构」存储
- macOS:双击证书文件,在钥匙串访问中添加到「系统」钥匙串,并设置信任为「始终信任」
完成后,代码中可以直接省略verify参数(默认值为True),Python会自动从系统信任库中查找证书。
内容的提问来源于stack exchange,提问作者SRM KTR
相关产品推荐
相关产品推荐

