You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何一台机器触发SSLCertVerificationError(证书链含自签名证书)另一台正常?

解决跨机器的aiohttp SSLCertVerificationError问题

排查方向与解决方案

  • 系统根证书不一致
    两台机器的系统根证书库可能存在差异,正规SSL证书的颁发机构根证书在出错机器上未被信任。可以手动指定站点的完整证书链文件路径:

    # 创建ClientSession时指定证书文件
    async with aiohttp.ClientSession(verify="/path/to/full-cert-chain.pem") as session:
        # 或在post请求中单独指定
        async with session.post(url, data=data, verify="/path/to/full-cert-chain.pem") as response:
            x = await response.text()
    
  • 网络代理/防火墙拦截
    出错机器可能通过代理访问,代理替换了SSL证书导致验证失败。可以显式禁用代理测试:

    # 创建不带代理的连接
    connector = aiohttp.TCPConnector(ssl=False)  # 仅测试用,生产环境慎用
    async with aiohttp.ClientSession(connector=connector) as session:
        pass
    

    同时检查是否有防火墙对SSL流量做中间人拦截,临时关闭防火墙验证是否恢复正常。

  • aiohttp版本差异
    两台机器的aiohttp版本不同,旧版本可能存在SSL验证逻辑bug。升级出错机器的aiohttp到最新稳定版:

    pip install --upgrade aiohttp
    
  • 服务器证书链不完整
    若站点服务器返回的证书缺少中间证书,部分机器无法完成完整验证。从浏览器导出站点的完整证书链(包含中间证书),在代码中指定使用该文件。

  • 系统时间偏差
    出错机器的系统时间与当前时间差过大,导致证书有效期验证失败。同步机器时间到网络时间服务器。


内容的提问来源于stack exchange,提问作者jaytate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:05:37