Android Xamarin C#:带有ServiceStack和自签名证书的Https

Android Xamarin C#:带有ServiceStack和自签名证书的Https,第1张

概述因此,我正在使用自签名证书将所有HttpWeb服务更改为Https进行测试(对于我正在制作的android应用),并且它们在服务器端都可以正常运行,我知道这是因为我可以将证书添加到PC的证书存储中,并且完美访问该网站,涉及到我的android应用对其进行调用时,我在客户端遇到了什么麻烦.我的Ser

因此,我正在使用自签名证书将所有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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1090576.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存