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

Git流水线中集成测试遇SSL连接失败问题求助

问题分析与解决方案

核心原因是Git流水线运行环境的系统信任存储中缺少目标API SSL证书的根CA证书——本地环境、Postman及其他应用的信任存储已包含该根CA,因此调用正常;而流水线的干净运行环境默认未导入,导致证书链验证失败。

解决步骤

1. 获取目标API的根CA证书

打开目标API的HTTPS地址(用浏览器),查看证书详情,找到并导出根CA证书为.crt格式(注意是根证书,不是服务器端的叶子证书)。

2. 在Git流水线中导入根CA到系统信任存储

根据流水线的运行环境选择对应操作:

  • Ubuntu/Debian环境:
    # 将根CA证书复制到系统信任目录
    sudo cp your-root-ca.crt /usr/local/share/ca-certificates/
    # 更新系统信任存储
    sudo update-ca-certificates
    
  • Windows环境:
    # 导入根CA到本地机器的信任根证书存储
    Import-Certificate -FilePath your-root-ca.crt -CertStoreLocation Cert:\LocalMachine\Root
    
  • Docker容器环境:
    在Dockerfile中添加证书导入步骤:
    COPY your-root-ca.crt /usr/local/share/ca-certificates/
    RUN update-ca-certificates
    

3. 临时测试方案(仅限非生产测试场景)

如果暂时无法导入根CA,可在测试代码中跳过SSL证书验证(注意:此方法不安全,仅适合测试环境):

  • 直接创建HttpClient时配置:
    var handler = new HttpClientHandler();
    // 忽略所有SSL证书验证错误
    handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true;
    var client = new HttpClient(handler);
    
  • 使用IHttpClientFactory注册时配置:
    services.AddHttpClient("TestApiClient")
            .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
            {
                ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true
            });
    

4. 排查流水线代理/防火墙

如果流水线通过代理访问外部API,代理可能会替换SSL证书(中间人代理),此时需要将代理的根CA证书也导入到信任存储中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:26:19