Python API调用报错:主机名不匹配,SSL证书无效
SSL证书验证失败:主机名不匹配问题分析
问题描述
尝试用Python Requests调用https://www.planit.org.uk/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): Max retries exceeded with url: //api/applics/json?auth=Hackney&start_date=2010-10-01&end_date=2010-10-02&pg_sz=10 (Caused by SSLError(SSLCertVerificationError(1, "[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'planit.org.uk'. (_ssl.c:1000)")))
错误原因
- SSL证书主机名不匹配:这是核心问题。目标服务器
planit.org.uk的SSL证书并非颁发给该裸域名,而是对应带www前缀的子域名(www.planit.org.uk),直接访问裸域名时,证书验证会因主机名不一致触发失败。 - URL格式冗余:代码中URL的
//api存在多余斜杠,虽不是SSL错误的直接诱因,但可能引发请求路径的潜在问题,建议修正为单斜杠。
内容的提问来源于stack exchange,提问作者Itachi07
相关产品推荐
相关产品推荐

