Android的WebView中,为WebView添加安全证书主要分为两种情况,下面将分别介绍。
一、WebView加载HTTPS的网址时,如果证书已经被Android系统信任,就不需要我们做任何处理,直接可加载显示。
二、如果需要访问的HTTPS网址证书并未被Android系统信任需要我们自行处理,以下是代码实现方法:
WebView webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); //接受所有证书
}
});
webView.loadUrl("https://your-https-url.com");
上面的代码中handler.proceed()
表示接受所有网站的证书,这种做法并不安全,因为此种情况下WebView将接受所有的证书,不论是否被信任,因此更安全的做法是将需要接受的证书添加到应用中,创建一个自定义的SslCertificate
,然后在onReceivedSslError
方法中对证书进行判断,这里需要注意的是此方法只能用于API 14及以上版本。
重载WebViewClient中的onReceivedSslError函数,可以按照如下方式处理:
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
final SslCertificate sslCertificate = error.getCertificate();
final SslCertificate savedSslCertificate = ... ; // Get saved certificate
if (savedSslCertificate.equals(sslCertificate)) {
handler.proceed();
} else {
super.onReceivedSslError(view, handler, error);
}
}
这段代码中,savedSslCertificate应该为预先保存的服务端证书或者证书信息。这样就可以接受指定的服务端证书,从而提高应用的安全性。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/169855.html