简单 Python API 调用 - 主机名不匹配,证书无效

Simple Python API Call - Hostname mismatch, certificate is not valid

提问人:Itachi07 提问时间:11/15/2023 最后编辑:Brian Tompsett - 汤莱恩Itachi07 更新时间:11/15/2023 访问量:67

问:

我正在尝试使用请求模块使用以下 API:

https://www.planit.org.uk/api/

我的代码如下(使用他们在 API 文档中提供的示例):

import pandas as pd
import requests

url = "https://planit.org.uk//api/applics/json?auth=Hackney&start_date=2010-10-01&end_date=2010-10-02&pg_sz=10"
r = requests.get(url)
print(r)

我收到以下错误:

requests.exceptions.SSLError: HTTPSConnectionPool(host='planit.org.uk', port=443): 超出了最大重试次数,网址: //api/applics/json?auth=Hackney&start_date=2010-10-01&end_date=2010-10-02&pg_sz=10 (由 SSLError(SSLCertVerificationError(1, “[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'planit.org.uk'.(_ssl.c:1000)“)))

谁能确定为什么我收到这个错误?

python ssl python请求

评论

0赞 John Gordon 11/15/2023
该主机没有正确的安全证书。您可以使用它来告知请求不要验证主机证书。requests.get(url, verify=False)

答:

1赞 Steffen Ullrich 11/15/2023 #1

服务器返回的证书对“www.planit.org.uk”有效,但对“planit.org.uk”(不带“www”)无效。这可能是由于服务器配置错误,但也可能是不应该使用“planit.org.uk”来调用它,即客户端的配置错误。

1赞 tadman 11/15/2023 #2

不会为该主机名配置证书,仅为 .使用这样的工具进行检查,它可以更详细地解释。www.planit.org.uk

PSA:同时使用主机的“dub”和“dubless”版本时,请务必相应地预配证书。这是一件容易被忽视的事情。