未找到证书路径的信任锚和信任锚可能的解决方案

Trust anchor for certification path not found and Trust anchor possible resolution

我正在尝试了解网络安全配置和证书位。 到目前为止,我从来没有费心在我的配置中设置信任锚,因为应用程序可以正常工作并依赖于服务器上设置的内容。

假设我有以下未指定信任锚的配置

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
      <domain-config cleartextTrafficPermitted="false">    
      </domain-config>
    </network-security-config>
  1. 在这种情况下,证书应用的默认策略是什么?
  2. 它会信任我服务器中设置的任何证书吗?

因为我认为我们的证书链已损坏(已使用 sslchecker 验证..),但我无法向网络团队的同事解释并且也不理解的情况。

为什么 android 应用程序在进行 https 调用时如果证书链已损坏(无法到达中间证书)却无法在浏览器中运行?

系统或用户是什么意思?我可以只添加这个吗,应用程序将不再给我“找不到证书路径的信任锚”

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config>
            <trust-anchors>
                <certificates src="system"/>
                <certificates src="user"/>
            </trust-anchors>
        </base-config>
    </network-security-config>
    

你能开灯吗?查看了 Android 文档,但我不清楚。 你能花 5 分钟给我解释一下吗? google这次没帮上忙

谢谢

What is the default policy applied for certs in this case ?

默认情况下,来自所有应用的安全连接(使用 TLS 和 HTTPS 等协议)信任预安装的系统 CA,并且面向 Android 6.0(API 级别 23)及更低版本的应用也默认信任用户添加的 CA 存储。应用程序可以使用 base-config(用于应用程序范围的自定义)或 domain-config(用于每个域的自定义)自定义自己的连接。

Will it trust any certificate set in my server?

您可以信任一组自定义 CA 而不是平台默认设置。 有关此的更多详细信息,请查看文档。 https://developer.android.com/training/articles/security-config#CustomTrust