我目前正在开发一个 Python 脚本,该脚本利用 requests 库发出 API 请求。但是,我遇到了一个问题,即我始终收到“SSL 证书验证失败”错误。我尝试过在线搜索解决方案,但建议的修复似乎都不起作用。
这是我的代码的简化版本:
import requests
url = 'https://example.com/api'
response = requests.get(url)
print(response.text)
这是我遇到的错误消息:
requests.exceptions.SSLError:HTTPSConnectionPool(host ='example.com',port = 443):超过最大重试次数,网址:/ api(由SSLError(“错误握手:错误([('SSL例程','tls_process_server_certificate” ', '证书验证失败')])"))
我已经尝试升级 certifi 库,将 verify 参数设置为 False (我知道这不是推荐的解决方案),并检查系统时间。尽管做出了这些努力,问题仍然存在。
有人可以帮助我了解可能导致此 SSL 证书验证错误的原因并提出可靠的解决方案吗?任何见解或指导将不胜感激!
请求模块的
verify=True
使用自己的 CA 集,该集可能没有 CA 签署您的服务器证书。
您需要找到系统 CA 文件的位置
然后将其添加为验证参数参数。
import requests
url = 'https://example.com/api'
response = requests.get(url, verify="pathToCAFile")
print(response.text)
或者,如果您只想修复警告而不修复根本问题,您可以使用 urllib 模块禁用它:
import requests
import urllib3
from urllib3.exceptions import InsecureRequestWarning
urllib3.disable_warnings(InsecureRequestWarning)
res = requests.get('https://example.com',verify=False)