0

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

假设我有以下配置,但没有指定信任锚

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

因为我认为我们有一个损坏的证书链(通过 sslchecker.. 验证),但我有一种情况,我无法向网络团队的同事解释,也无法理解。

如果证书链被破坏(无法到达中间证书)但在浏览器中工作,为什么在进行 https 调用时 Android 应用程序不起作用?

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

    <?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分钟给我解释一下吗?谷歌这次没有帮助

谢谢

4

1 回答 1

0

在这种情况下,证书应用的默认策略是什么?

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

它会信任我服务器中设置的任何证书吗?

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

于 2021-08-20T06:40:22.850 回答