[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, c...

2026年04月04日 21:25 processing

错误信息

Model glm-5.1-free failed: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'api.dmxapi.cn'. (_ssl.c:1032)>. Trying next. FAILED — All models failed: All models failed. Last error: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'api.dmxapi.cn'. (_ssl.c:1032)>

AI 解决方案

报错分析报告

1.错误翻译


原文:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'api.dmxapi.cn'. (_ssl.c:1032)
译文:SSL:证书验证失败,证书验证出错:主机名不匹配,证书对'api.dmxapi.cn'无效。(_ssl.c:1032)

2.原因分析


  • 根本原因:SSL证书验证时,请求的主机名api.dmxapi.cn与证书中绑定的主机名不一致。

  • 发生位置:调用DMXAPI模型(glm-5.1-free)的网络请求阶段,触发HTTPS SSL握手验证。

  • 上下文:客户端访问api.dmxapi.cn时,服务器返回的证书未包含该主机名,导致验证失败。
  • 3.解决方案


    #### 修复步骤(优先推荐)
  • 确认API端点正确性:检查请求的URL是否应为其他主机名(如dmxapi.cn而非api.dmxapi.cn),联系DMXAPI官方获取正确端点。

  • 临时测试方案(仅本地调试用,生产环境禁用):禁用证书验证(需承担安全风险)。
  • import requests
    import urllib3
    
    # 1. 优先使用正确URL(示例,替换为官方给的真实地址)
    correct_url = "https://dmxapi.cn/your-model-endpoint"  # 假设正确主机名是dmxapi.cn
    try:
        response = requests.get(correct_url, verify=True)  # 启用证书验证
    except requests.exceptions.SSLError:
        # 2. 临时测试:禁用验证(生产环境禁止!)
        urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
        response = requests.get("https://api.dmxapi.cn/your-model-endpoint", verify=False)
    

    4.️ 预防措施


  • 最佳实践1:调用API前,用nslookup api.dmxapi.cn或浏览器访问URL,确认证书中的主机名与请求一致。

  • 最佳实践2:生产环境始终启用SSL验证,使用openssl s_client -connect api.dmxapi.cn:443检查证书详情。

  • 推荐工具:Postman(可视化验证API端点)、Certbot(管理证书)。