当前位置: 首页 > 知识库问答 >
问题:

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

武峻熙
2023-03-14
System.Net.WebException: 
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.'

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

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

解决方案的一部分是将CA证书添加到Android设备(通过设置

android应用程序中的Web浏览器现在可以在没有警告的情况下成功访问https站点。

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

这是Xamarin时代可以做到的事情,比如:

  • https://devblogs.microsoft.com/xamarin/cleartext-http-android-network-security/

但是在毛伊岛我有点迷路了,我没有看到正确的资源,mipmap等等。

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

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

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

是否有一个单行程序,或者有人可以帮助我配置我的网络安全配置,以使CA存储在MAUI解决方案中可用?

共有2个答案

华良才
2023-03-14

在Gerald的建议之后,“所以您仍然可以在Resources下添加一个xml文件夹(即Android文件夹下)”,我终于得到了它!

添加network_security_config.xml文件,在Android文件夹下,与:

<?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>

在你的AndroidManifest中。xml将:android:networkSecurityConfig=“@xml/network\u security\u config”属性添加到应用程序节点<因此,请将其添加到现有节点,不要添加新节点(否则会出现奇怪的错误):

信任锚异常已经消失,但我仍然很好奇,如果没有网络安全配置,是否还有其他方法

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

楚俊逸
2023-03-14

好吧,我在这里看到了一些事情,但不确定你到底在追求什么,所以让我一个接一个地看一下。

让我们从:如果可以,请避免使用明文流量!;)

然后,简单的一个,你想要[汇编:应用程序(UseCleartext流量=true)]oneliner。你仍然可以这样做,实际上你现在可以在整个项目中这样做,我认为。但它在Android中最有意义。

请注意该属性是如何表示程序集的,因此它无论如何都适用于整个程序集,而不管您将其放置在何处。这就是它通常的工作方式。然而,在。NET MAUI在主应用程序上方已有一个属性,请打开该属性并按如下方式修改

namespace MauiAndroidClearText;

[Application(UsesCleartextTraffic = true)]
public class MainApplication : MauiApplication
{
   // Your code
}

基本上,您单独的Android项目现在位于Platform\Android文件夹下。您放在那里的所有内容,即使默认情况下不在那里,仍将像在单独的Android项目中一样运行。

因此,您仍然可以在资源下添加一个xml文件夹(即Android文件夹下),然后添加网络安全配置。xml文件,包含:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">10.0.2.2</domain> <!-- Debug port -->
    <domain includeSubdomains="true">xamarin.com</domain>
  </domain-config>
</network-security-config>

在您的AndroidManifest中。xml将android:networkSecurityConfig=“@xml/network\u security\u config”属性添加到应用程序节点。

在此处查看完整示例:https://github.com/jfversluis/MauiAndroidClearText

 类似资料:
  • 我在Weblogic服务器上有一个web应用程序,它通过HTTPS接受带有自签名证书的连接。Weblogic服务器URL上的Web应用https://server1.com:7122/webapp1/ 我还在同一台服务器上安装了ngnix,该服务器上的证书充当服务器上所有Web应用程序的前端。Nginx服务器URLhttps://server1.com:443/ 我希望用户通过nginx访问Web

  • 本文向大家介绍Python SSL证书验证问题解决方案,包括了Python SSL证书验证问题解决方案的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Python SSL证书验证问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一、SSL问题 1、在你不启用fiddler时,python代码直接发送https请求,不会有SS

  • 本文向大家介绍Android Handler内存泄漏详解及其解决方案,包括了Android Handler内存泄漏详解及其解决方案的使用技巧和注意事项,需要的朋友参考一下 关联篇:深入Android的消息机制源码详解-Handler,MessageQueue与Looper关系 关联篇:HandlerThread 使用及其源码完全解析 在android开发过程中,我们可能会遇到过令人奔溃的OOM异

  • 我遇到了一个奇怪的问题——供应商使用TLS SSLv3,同时使用自签名客户端和服务器证书。Java1.5和Java1.6没有这个问题——只需将客户端证书和私钥导入密钥库,将服务器公共证书导入信任库。一切都很好。然而,在Java7中,服务器证书无法被信任,即使使用的是同一个信任库。我尝试过使用Java7 (1.7.03, 04和05、x86和x64版本)的视窗和红帽,但没有成功。 我从头开始重新创建

  • 我已经按照链接HTTPS://developer.android.com/training/articles/security-ssl.html#unknownCA上提到的说明连接到具有自签名证书的HTTPS服务器。我已经把证书上传到了azure服务中,并且在android应用程序中添加了相同的证书,然后它就正常工作了,但是当我从服务中的相同CA中更改了证书,它就停止工作了。它给出了一个错误jav

  • 在Android上安装系统CA证书 从Android 7开始,除非将应用程序配置为使用用户证书,否则它们将忽略用户证书。由于大多数应用程序未明确选择使用用户证书,因此我们需要将mitmproxy CA证书放置在系统证书存储中,以避免不得不打补丁我们要监视的每个应用程序。 请注意,应用程序可以决定忽略系统证书存储,并维护自己的CA证书。在这种情况下,您必须修补该应用程序。 1.先决条件 来自Andr