首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin webview Android SSL错误不可信-如何添加受信任证书

Xamarin webview Android SSL错误不可信-如何添加受信任证书
EN

Stack Overflow用户
提问于 2021-01-26 17:03:13
回答 1查看 1.2K关注 0票数 1

我在adroid应用程序上的Xamarin应用程序上有SSL错误不可信(iOS工作得很好)。我需要使用Webview。

我按照httpclient:https://thomasbandt.com/certificate-and-public-key-pinning-with-xamarin的说明进行操作。我需要设置TrustManagerFactory、KeyManagerFactory和KeyStore,但是在WebViewRenderer和WebViewClient中,我找不到将我的证书添加为受信任的证书的选项。我不想比较OnReceivedSslError重写方法中的证书,因为这个方法中的证书是最终的证书(将过期一年)。在调用webview中的证书方法之前,我希望将根证书和中间证书添加到受信任证书列表中。

ExportRenderer:

代码语言:javascript
复制
public class CustomWebView : WebViewRenderer
    {
        private TrustManagerFactory _trustManagerFactory;
        private KeyManagerFactory _keyManagerFactory;
        private KeyStore _keyStore;

        public CustomWebView(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
        {
            base.OnElementChanged(e);
            if (e.NewElement != null)
            {
                var customWebViewClient = new CustomWebViewClient();
                _trustManagerFactory = CertificateHelper.TrustManagerFactory;
                _keyManagerFactory = CertificateHelper.KeyManagerFactory;
                _keyStore = CertificateHelper.KeyStore;
                Control.SetWebViewClient(customWebViewClient);
            }
        }
    }

如何在这里设置TrustManagerFactory、KeyManagerFactory和KeyStore?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-05 12:57:05

我终于找到了解决办法。在我的例子中,添加最终用户证书或中间证书(单独或一起)使一切正常工作。最终用户证书是短期的,所以我建议添加长期中级证书.

添加:android:networkSecurityConfig="@xml/network_security_config"以在应用程序部分中显示。

将新的xml文件(build action AndroidResource)添加到参考资料-> xml -> network_security_config.xml中

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <base-config>
    <trust-anchors>
      <certificates src="@raw/untrusted_ca"/>
      <certificates src="system"/>
    </trust-anchors>
  </base-config>
</network-security-config>

证书名称应仅由小写字母、数字和下划线组成。

在:->原始-> untrusted_ca.pem中添加证书(生成操作:->)

现在,android在应用程序级别信任服务器,因此在连接到特定服务器时不会出现更多ssl错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65905802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档