MAUI .NET 7 Android端如何使用自签名证书发起HTTP请求?
MAUI .NET 7 Android端使用自签名证书发起请求的经验分享
问题背景
在MAUI .NET 7 Android端使用原生AndroidMessageHandler时,存在AndroidMessageHandler.ClientCertificates未初始化(为空)的问题,导致无法正常使用自签名证书发起HTTP请求。本次场景中使用的是基于.NET 7标准RSA功能生成私钥的自签名证书(.NET 6环境下可通过BouncyCastle NuGet包实现同款功能)。
曾找到一个针对Xamarin Android的相关问题讨论,虽未给出可行解决方案,但为本次实现提供了思路启发。
实现步骤
- 自定义消息处理器,继承自
AndroidMessageHandler - 在自定义处理器的构造函数中,初始化
ClientCertificates并添加自签名证书 - 重写
ConfigureKeyStore、ConfigureKeyManagerFactory和ConfigureTrustManagerFactory三个方法 - 在
ConfigureKeyStore方法中,将自签名证书和私钥导入新建的KeyStore(需将.NET RSA相关对象转换为Java证书,可提供转换代码),这是让证书在HTTP请求中生效的关键步骤 - 在构造函数中设置
ServerCertificateCustomValidationCallback,处理自签名证书引发的SslPolicyErrors.RemoteCertificateChainErrors问题
若需要可提供完整可运行代码。
截至2023年3月,官方尚未针对该问题给出可行解决方案,特此分享该实现经验供开发者参考。
内容的提问来源于stack exchange,提问作者Rufat AA
相关产品推荐
相关产品推荐

