Unable to connect to API: SSL certificate verification failed. Check your proxy ...

2025年12月14日 19:38 状态: processing

🚨 错误信息

Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates

🤖 AI解决方案

代码糕手 - 专业报错分析报告

错误翻译

原文:Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates
译文:无法连接到API:SSL证书验证失败。请检查您的代理或企业SSL证书

原因分析

该错误表明您的程序在尝试通过HTTPS连接到API服务器时,SSL/TLS握手失败,证书验证未通过。根本原因可能是:
  • 服务器使用了自签名证书或不受信任的CA签发的证书
  • 代理服务器进行了SSL中间人拦截并使用了自定义证书
  • 企业网络环境中使用了内部CA证书,但您的系统中未安装该根证书
  • 服务器证书已过期或域名不匹配
  • 解决方案

    方案1:临时绕过验证(开发/测试环境)

    注意:生产环境不推荐使用此方法
    import requests
    import urllib3
    
    # 禁用SSL证书验证(仅用于调试)
    response = requests.get('https://api.example.com', verify=False)
    
    # 同时忽略警告
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    // Node.js - 使用node-fetch
    const fetch = require('node-fetch');
    
    // 设置rejectUnauthorized为false
    const https = require('https');
    const agent = new https.Agent({
      rejectUnauthorized: false
    });
    
    fetch('https://api.example.com', { agent });

    方案2:添加自定义证书(推荐)

    import requests
    
    # 指定自定义证书路径
    response = requests.get(
        'https://api.example.com',
        verify='/path/to/custom/certificate.pem'  # 企业CA证书或服务器证书
    )

    方案3:更新系统证书库

    # Ubuntu/Debian
    sudo apt-get update
    sudo apt-get install ca-certificates
    
    # CentOS/RHEL
    sudo yum update ca-certificates
    
    # macOS
    brew install ca-certificates

    ️ 预防措施

    1. 证书管理最佳实践

  • 开发环境:为内部服务配置受信任的证书,避免直接禁用验证
  • 生产环境:确保API服务器使用有效的公共CA证书(如Let's Encrypt)
  • 企业环境:将内部CA证书添加到系统的可信根证书存储中
  • 2. 推荐工具与检查方法

  • 证书检查工具
  •   # 使用openssl检查服务器证书
      openssl s_client -connect api.example.com:443 -showcerts
      
      # 检查证书详细信息
      echo | openssl s_client -servername api.example.com -connect api.example.com:443 2>/dev/null | openssl x509 -noout -text
      
  • 开发工具推荐
- Postman:提供证书管理功能 - curl:使用--cacert参数指定证书文件 - mitmproxy:用于调试SSL/TLS问题

---

⚠️ 安全提醒:在禁用SSL验证时需格外谨慎,这会暴露您的连接中间人攻击的风险。建议仅在可信的开发和测试环境中临时使用此方法。