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:临时绕过验证(开发/测试环境)


    注意:生产环境不推荐使用此方法

    python
    import requests
    import urllib3

    禁用SSL证书验证(仅用于调试)


    response = requests.get('https://api.example.com', verify=False)

    同时忽略警告


    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

    javascript
    // 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:添加自定义证书(推荐)

    python
    import requests

    指定自定义证书路径


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

    方案3:更新系统证书库


    bash

    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. 推荐工具与检查方法


  • 证书检查工具

  • bash
    # 使用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验证时需格外谨慎,这会暴露您的连接中间人攻击的风险。建议仅在可信的开发和测试环境中临时使用此方法。