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

Android Retrofit调用本地ASP.NET API出现Trust anchor认证路径未找到错误

本地Android调用ASP.NET自签名接口证书校验错误解决方案

核心原因排查&修复

  • 证书SAN字段缺失(90%概率触发)
    Android 7.0及以上版本证书校验优先读取X509v3 Subject Alternative Name(SAN)字段,不再兼容仅填CN(通用名称)的旧证书。
    执行命令查看证书内容:
openssl x509 -in 你的证书pem文件路径 -text -noout

如果输出中没有IP Address:10.0.2.2的SAN条目,重新生成自签名证书,必须将10.0.2.2加入IP类型的SAN字段。ASP.NET开发证书可通过以下命令重新生成带SAN的版本:

# 清理原有开发证书
dotnet dev-certs https --clean
# 生成包含10.0.2.2的新开发证书
dotnet dev-certs https -ep ./localhost.pfx -p 自定义密码 --san "DNS:localhost,IP:127.0.0.1,IP:10.0.2.2"
# 信任新证书
dotnet dev-certs https --trust

之后重新导出根CA转PEM格式放入项目raw目录即可。

  • 配置文件路径/命名错误
  1. 确认network_security_config.xml文件存放路径为res/xml/,文件名全小写,Android资源严格区分大小写
  2. 确认res/raw/目录下的证书文件名为localhost(raw资源引用自动忽略后缀,不要保留.pem/.cer后缀)
  3. 确认AndroidManifest中android:networkSecurityConfig="@xml/network_security_config"属性直接写在<application>标签下,未嵌套在其他子标签内
  • 网络框架自定义配置覆盖系统规则
    如果给Retrofit依赖的OkHttpClient配置了自定义SSLSocketFactory或X509TrustManager,会覆盖系统网络安全配置的信任规则。要么删除自定义SSL配置让OkHttp使用系统默认信任管理器,要么将你的自定义CA手动加入自定义TrustManager的信任列表。

  • 低版本系统兼容问题
    如果你的targetSdkVersion低于24(Android 7.0),系统原生不支持network_security_config配置,需要手动给OkHttp配置自定义信任管理器才能生效。

临时调试方案

仅本地开发时可在network_security_config中添加调试覆盖规则,debug包自动信任指定证书无需额外配置:

<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="@raw/localhost"/>
            <certificates src="user"/>
        </trust-anchors>
    </debug-overrides>
    <domain-config>
        <domain includeSubdomains="false">10.0.2.2</domain>
        <trust-anchors>
            <certificates src="@raw/localhost"/>
        </trust-anchors>
    </domain-config>
</network-security-config>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:54:03