Python中因SSL证书错误无法连接网站,求助uasiren API使用问题
解决SSL证书IP不匹配的验证失败问题
错误根源
你遇到的ClientConnectorCertificateError是因为直接通过IP地址(207.154.193.88)访问siren.pp.ua,但该域名的SSL证书并未将这个IP地址列入有效访问标识(Subject Alternative Name,SAN字段),导致SSL验证环节失败。这个问题和pip版本完全无关,不用再折腾pip了。
解决方案
1. 改用域名访问(推荐,安全合规)
直接在请求中使用siren.pp.ua域名,而非硬编码IP地址。DNS会自动将域名解析到正确的服务器IP,此时证书验证会匹配域名,自然通过。
2. 临时关闭SSL验证(仅测试环境使用)
如果测试场景下必须用IP访问,可以在aiohttp请求中禁用SSL验证:
import aiohttp async def fetch_uasiren_data(): # 创建禁用SSL验证的连接器 connector = aiohttp.TCPConnector(ssl=False) async with aiohttp.ClientSession(connector=connector) as session: async with session.get('https://207.154.193.88/your-api-path') as resp: return await resp.json() # 或根据API返回格式调整
⚠️ 警告:此方法会完全跳过SSL安全验证,可能遭受中间人攻击,绝对不能用于生产环境。
3. 手动指定可信证书(安全且适配IP访问)
如果你能获取到siren.pp.ua的官方可信证书(比如站点证书或其根证书),可以在请求中指定证书路径来通过验证:
import aiohttp import ssl # 创建加载指定证书的SSL上下文 ssl_ctx = ssl.create_default_context(cafile='/absolute/path/to/siren_pp_ua_certificate.pem') async def fetch_uasiren_data(): connector = aiohttp.TCPConnector(ssl=ssl_ctx) async with aiohttp.ClientSession(connector=connector) as session: async with session.get('https://207.154.193.88/your-api-path') as resp: return await resp.json()
此方法保留SSL加密安全性,但需确保你获取的证书是官方发布的可信证书,避免引入安全风险。
内容的提问来源于stack exchange,提问作者Biker Shudo
相关产品推荐
相关产品推荐

