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

Xamarin Android访问.NET Core WebAPI时出现SSL证书验证失败报错问题

问题根因

System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception. ---> Mono.Btls.MonoBtlsException: Ssl error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED
该报错直接指向Let's Encrypt 2021年旧根证书DST Root CA X3过期引发的兼容性问题:

  • 2021年9月30日Let's Encrypt运营多年的DST Root CA X3根证书正式过期,替换根证书为ISRG Root X1
  • Android 7.1及以下系统默认未内置ISRG Root X1根证书
  • Xamarin Android默认使用的Mono BTLS加密栈在校验证书链时,会优先匹配到过期的DST Root CA X3,直接触发校验失败
  • 桌面浏览器、iOS、Android高版本系统内置了ISRG Root X1,或者内置了证书链回退校验逻辑,因此可以正常访问;旧版本Postman也会触发和Xamarin Android一致的过期提示
排查步骤
  • 首先确认测试用的Android设备系统版本:如果是Android 7.1及以下,90%以上概率为上述根证书兼容问题
  • 用openssl命令行检测服务端返回的证书链:执行命令openssl s_client -connect 你的域名:443,查看返回的证书链是否包含过期的DST Root CA X3
  • 确认你的.NET Core WebAPI配置的证书是否是完整的证书链,而非仅单个域名证书
解决方法

方法1:服务端调整证书链(优先推荐,无客户端兼容问题)

修改Ubuntu服务端的Web服务(Nginx/Apache/Kestrel)证书配置,优先返回不带DST Root CA X3的短证书链:

  • 如果你使用certbot申请证书,重新执行证书生成命令添加参数:certbot renew --preferred-chain "ISRG Root X1"
  • 重启Web服务后,再次用openssl验证证书链,确认已移除DST Root CA X3相关条目

方法2:Xamarin Android端适配(适合无法修改服务端的场景)

方案2.1 内置信任ISRG Root X1根证书

  • 下载ISRG Root X1根证书的PEM文件,放在Android项目的Assets目录下,设置生成操作为AndroidAsset
  • 自定义HttpClient的SSL校验逻辑,手动信任内置的ISRG Root X1证书:
var handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) =>
{
    if (sslPolicyErrors == SslPolicyErrors.None) return true;
    // 校验证书是否是Let's Encrypt ISRG Root X1签发的合法证书
    var isrgRootX1Thumbprint = "CABD2A79A1076A31F21D253635CB039D4329A5E8"; 
    return chain.ChainElements.Any(c => c.Certificate.Thumbprint.Equals(isrgRootX1Thumbprint, StringComparison.OrdinalIgnoreCase));
};
var httpClient = new HttpClient(handler);

方案2.2 切换Xamarin Android的加密栈

在Xamarin Android项目属性的「Android选项」->「高级」中,将SSL/TLS实现从Mono BTLS切换为Native TLS 1.2+,使用Android系统原生的加密栈进行证书校验,规避Mono BTLS的证书链校验逻辑问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:09:02