Android Xamarin C#:带有ServiceStack和自签名证书的Https
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android Xamarin C#:带有ServiceStack和自签名证书的Https,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2191字,纯文字阅读大概需要4分钟。
内容图文
![Android Xamarin C#:带有ServiceStack和自签名证书的Https](/upload/InfoBanner/zyjiaocheng/683/d6e90c24b99849e68d1213a0915d549b.jpg)
因此,我正在使用自签名证书将所有Http Web服务更改为Https进行测试(对于我正在制作的android应用),并且它们在服务器端都可以正常运行,我知道这是因为我可以将证书添加到PC的证书存储中,并且完美访问该网站,涉及到我的android应用对其进行调用时,我在客户端遇到了什么麻烦.
我的Servicestack调用看起来像这样:
var client = new JsonServiceClient(stubServicesBaseUrl);
return client.Get(new GetLastStatusUpdate()).StatusUpdates.Last();
并且这些曾经在只有http的情况下工作,但是自从我添加了将自签名证书添加到android受信任的凭据存储中的代码以来,调用已停止工作,而请求似乎超时了.
byte[] certificate;
using (var streamReader = new StreamReader(Assets.Open("ScoutTestCert.crt")))
{
using (var byteStream = new MemoryStream())
{
streamReader.BaseStream.CopyTo(byteStream);
certificate = byteStream.ToArray();
}
}
var installCertificate = KeyChain.CreateInstallIntent();
installCertificate.PutExtra(KeyChain.ExtraCertificate, certificate);
StartActivity(installCertificate);
上面的代码将证书添加到“用户”部分中的android可信存储中,并允许我通过androidEmulator上的Internet应用程序导航到该站点而不会出现问题,因此看来问题仅在尝试在我的ServiceStack中进行调用时出现应用程式程式码.
我是否在代码中缺少某些内容,例如服务堆栈需要的额外设置或类似内容?几天来,我一直在为这个问题而苦苦挣扎!
我试图将webservice调用保留为servicestack,因为我希望它是PCL而不是android特定代码.
谢谢.
解决方法:
ServiceStack的.NET Service Clients使用.NET的BCL内置的HttpWebRequest来使自签名证书与.NET HTTP客户端一起使用,您需要注册custom Certificate Validation Callback,例如下面的回调将使所有证书成功:
ServicePointManager.ServerCertificateValidationCallback +=
(sender, certificate, chain, sslPolicyErrors) => true;
但是您可能希望将验证范围限制为与您的自签名证书一起使用.
使用ServiceStack的基于HttpWebRequest的Service Client的替代方法是使用PCL HttpClient-based JsonHttpClient,这具有以下优点:可以将其配置为使用ModernHttpClient并具有以下功能:
JsonHttpClient.GlobalHttpMessageHandlerFactory = () =>
new NativeMessageHandler()
哪个代替使用.NET HTTP Client堆栈,而是使用基础iOS和Android平台上可用的本机HTTP库.然后,您应该可以使用在Android上注册的所有证书.
为了使用通过ModernHttpClient在.NET中注册的不受信任的自签名证书,您将需要使用pro version of ModernHttpClient作为mentioned on this thread.
内容总结
以上是互联网集市为您收集整理的Android Xamarin C#:带有ServiceStack和自签名证书的Https全部内容,希望文章能够帮你解决Android Xamarin C#:带有ServiceStack和自签名证书的Https所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。