Ssl 在Xamarin Android中接受自签名证书
我得到了一个Xamarin表单项目,在MainPage.xaml.cs文件中,我想执行对服务器的请求。服务器使用ASP.NET Core 2编写,并使用自签名证书运行 购买证书并不能解决我的问题,因为客户不希望证书和应用程序只在LAN中运行 在我的MainPage.xaml.cs文件中,Http请求如下所示:Ssl 在Xamarin Android中接受自签名证书,ssl,xamarin,xamarin.android,httpclient,Ssl,Xamarin,Xamarin.android,Httpclient,我得到了一个Xamarin表单项目,在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_Clie
HttpClient m_Client = new HttpClient();
var uri = new Uri(myURL);
var response = await m_Client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
...
}
到目前为止还不错。如果我将应用程序带到Android上并尝试执行请求,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
有自己的处理程序。它不回答您的问题,但禁用HTTPS如何@是的,这将是我最后的选择:)您可以从一些证书颁发机构免费获得SSL证书:仅举一个例子:@SushiHangover是的,但我不是必须输入类似域名的内容吗?我没有,服务器是在局域网上运行的。。