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