信任其他 CA 并在 net6 MAUI 解决方案中使用 Android 证书存储

pro*_*cro 2 c# android xamarin.android maui

System.Net.WebException: 
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.'
Run Code Online (Sandbox Code Playgroud)

这是我的 VS2022 解决方案在使用自签名证书和 Android 时出现的错误。

案例如下:
它是一个在本地网络上运行的 Android 应用程序,具有本地 https 后端服务。域管理员已为此服务颁发了证书。但是,该域不是官方 CA(证书颁发机构)。然后,您必须通过设置手动安装 CA。

解决方案的一部分
我为解决此问题所做的是将 CA 证书添加到 Android 设备(通过“设置”>“安全”->“加密和凭据”->“安装证书”)。

Android 应用程序中的 Web 浏览器现在可以成功访问 https 站点,而不会出现警告。

我仍然需要帮助,
但是除非通过网络安全配置进行配置,否则无法通过应用程序访问 CA 商店: https://developer.android.com/training/articles/security-config#TrustingAdditionalCas

这是可以在 Xamarin 时代完成的事情,例如:

但在MAUI我有点迷失,我没有看到合适的资源,mipmap等。

我想用这样的一句话来解决这个问题:

[程序集:应用程序(UsesCleartextTraffic = true)]

...也可以通过网络安全配置进行配置。

是否有一句话或者有人可以帮助我配置我的网络安全配置以使 CA 商店在 MAUI 解决方案中可用?

pro*_*cro 6

经过Gerald的建议“所以你仍然可以在Resources下添加一个xml文件夹(即Android文件夹下)”,我终于明白了!

在此输入图像描述

在 Android 文件夹下添加一个 network_security_config.xml 文件,其中包含:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
        <!-- Trust preinstalled CAs -->
        <certificates src="system" />
        <!-- Additionaly trusted user added CAs -->
        <certificates src="user"/>
    </trust-anchors>
    </base-config>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)

并在 AndroidManifest.xml 中将:android:networkSecurityConfig="@xml/network_security_config"属性添加到应用程序节点。
因此,将其添加到已经存在的节点,不要添加新节点(否则你会得到奇怪的错误):

在此输入图像描述

信任锚异常消失了,但我仍然很好奇是否有另一种方法 - 没有网络安全配置。;-)

PS 不要忘记将 CA 证书添加到 Android 设备,如原始问题中所述。