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

AWS Lambda .NET Core 3.1 请求API出现SSL连接建立失败认证异常

问题根因与排查修复方案

该故障90%以上概率和Let's Encrypt旧交叉签名根证书(DST Root CA X3)过期、.NET Core 3.1自带的根证书信任列表逻辑缺陷相关:其他平台请求正常是因为新操作系统/运行时已经信任了ISRG Root X1独立根证书,但AWS Lambda的.NET Core 3.1运行时环境的信任链校验逻辑存在特殊处理,刚好触发了校验失败。

可按以下优先级排查修复:

  • 第一步:调整API服务端证书链配置
    多数Let's Encrypt自动签发工具默认会保留包含DST Root CA X3的兼容证书链,.NET Core 3.1的校验逻辑会优先走旧根的校验路径,哪怕新根已经被信任也会校验失败。可手动把服务端证书链切换为仅包含ISRG Root X1的最短链,大部分场景改完即可恢复。
  • 第二步:替换过时的WebRequest实现
    当前使用的WebRequestAPI在.NET Core中已经被标记为过时,底层SSL校验逻辑存在已知缺陷,建议替换为HttpClient单例实现,示例代码如下:
    // 注意HttpClient需设置为全局单例,不要每次请求都新建
    private static readonly HttpClient _httpClient = new HttpClient();
    // 请求逻辑
    using var request = new HttpRequestMessage(HttpMethod.Get, APIurl);
    request.Headers.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
    request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", _APIToken); // 按实际认证Scheme调整
    using var response = await _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
    response.EnsureSuccessStatusCode();
    // 后续处理响应内容
    
  • 第三步:临时校验修复(仅建议应急使用,不推荐长期保留)
    如果需要快速恢复业务,可以在服务启动时添加全局证书校验回调,严格过滤合法证书的校验规则,不要直接跳过所有证书校验:
    ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) =>
    {
        if (sslPolicyErrors == SslPolicyErrors.None) return true;
        // 此处填入你的API证书指纹或者Let's Encrypt合法证书的颁发者信息做校验
        return cert.Issuer.Contains("ISRG Root X1") && cert.GetCertHashString().Equals("你的证书大写指纹值");
    };
    
  • 第四步:确认Lambda运行时环境配置
    检查近期是否更新过Lambda的层配置、运行时镜像:.NET Core 3.1已经停止官方支持,AWS的运行时镜像如果有隐性更新也可能导致根证书信任列表变更,有条件的话建议将运行时升级到.NET 6+的LTS版本,从根本上解决旧运行时的缺陷。

快速验证方法

可以在Lambda代码中添加证书链打印的调试逻辑,输出请求时获取到的证书链每个节点的颁发者、过期时间,即可直接定位是否触发了旧根证书的校验失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:15:03