python-3.x HTTPSConnectionPool:超过URL的最大重试次数(由SSLError引起)

y1aodyip  于 2023-04-08  发布在  Python
关注(0)|答案(1)|浏览(290)

我正在尝试使用Python请求库和证书库向URL发出HTTPS请求,如下所示:

import certifi
url = 'https://10.0.0.39:4455/api/cars'

response = requests.get(url, verify=certifi.where())

if response.status_code == 200:
    print(response.json())
else:
    print(f'Request failed with status code {response.status_code}: {response.text}')

但是,我一直收到以下错误消息:

"requests.exceptions.SSLError: HTTPSConnectionPool(host='https://10.0.0.39/api/cars', port=4455): 
Max retries exceeded with url: /api/cars (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),))"

我已经导入了certifici模块来验证SSL/TLS证书。我还使用pip安装了certifici模块。但是,我仍然收到此错误消息。我如何解决此问题?此外,flask API正在我的其他计算机(10.0.0.39)上运行,并且有一个ssl certificat活动。

j0pj023g

j0pj023g1#

如果将verify=False添加到requests.get()调用中,错误消失,则很可能是服务器颁发的SSL证书在客户端上不受信任。要解决此问题,您可以使用API端认可的证书颁发机构颁发的受信任证书,或者将API中的证书颁发机构添加到客户端。如果错误仍然存在,请尝试以下命令更新证书库
pip install --upgrade certifi如果是python3的旧版本
python -m pip install --upgrade certifi如果是较新版本的python3
这将确保您的客户端具有最新版本的库,其中包括一组验证SSL证书所需的受信任根证书。

相关问题