gpt4 book ai didi

ssl - 在 Xamarin Android 中接受自签名证书

转载 作者:行者123 更新时间:2023-12-03 19:33:07 26 4
gpt4 key购买 nike

我有一个 Xamarin Forms 项目,在 MainPage.xaml.cs 文件中,我想对我的服务器执行请求。该服务器是用 ASP.NET Core 2 编写的,并使用自签名证书运行。

购买证书不是我的问题的解决方案,因为客户不想要它并且应用程序只在 LAN 中运行。

在我的 MainPage.xaml.cs 文件中,Http 请求如下所示:

HttpClient m_Client = new HttpClient();
var uri = new Uri(myURL);

var response = await m_Client.GetAsync(uri);

if (response.IsSuccessStatusCode)
{
...
}

到现在为止还挺好。如果我将应用程序带到 安卓并尝试执行请求,Android 抛出 SSL 异常,因为找不到我的证书的 CA。

如何使用自签名证书与我的服务器通信?

我查找了问题并找到了很多解决方案,例如:
ServicePointManager
.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;

如果将此代码添加到 Android 项目中的 MainActivity.cs 文件,它应该接受所有证书。但这对我不起作用。似乎这个方法永远不会被调用。

任何建议如何进行沟通?

问候

最佳答案

一种选择是处理证书,这已在上面的评论中讨论过。
但是,我认为在代码中忽略证书验证的选项总是更快,而您只需要这个,

var handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
HttpClient client = new HttpClient(handler);
由于一些未知的原因,您不能使用 ServicePointManager.ServerCertificateValidationCallback 的全局事件处理程序。就像你发现的一样,但是 HttpClient有自己的处理程序。

关于ssl - 在 Xamarin Android 中接受自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52441979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com