Python 请求在特定 HTTPS 站点上失败,尽管其证书有效

requests我们正在使用一个内部用于访问在线服务的Python 包。该服务位于https://dsbox02.isi.edu:8888/ 。如果您使用浏览器点击该链接,您将看到该页面打开,并且它具有有效的证书。

但是,以下 Python 代码会失败:

import requests
requests.get('https://dsbox02.isi.edu:8888')

requests.exceptions.SSLError: HTTPSConnectionPool(host='dsbox02.isi.edu', port=8888): url 超出最大重试次数: / (由 SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败: 无法获取本地颁发者证书 (_ssl.c:1122)')))

这种情况发生在 Windows 10 和 Python 3.7、Ubuntu 18.04 和 Python 3.6 以及python:latest带有 Python 3.9 的 docker 映像上。在装有 Python 3.8 的 Mac 上它确实可以工作。


呼唤远方
浏览 178回答 1
1回答

杨魅力

有些 ssl 证书并非在所有 Web 浏览器中都受信任。您可能需要安装中间/链证书以将其链接到受信任的根证书。最简单的方法是使用 ssl 检查器检查您的网站。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python