使用KitKat版本以下的WebView访问具有不受信任证书的https URL时,我可以绕过SSL错误
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}但它不适用于KitKat浏览器。有什么办法可以解决这个问题吗?
发布于 2014-08-21 17:26:51
我最近也遇到了这个问题,没有文档记录,但似乎在Android4.4ssl上调用方法onReceivedSslError取决于KitKat错误的类型。我检查了这两个案例:
对我来说,潜在的问题是web服务器没有公开完整的证书链,而只公开了最后一个证书,把验证整个证书链的责任留给了设备,前提是它将所有证书都存储在设备证书存储中,而Android设备不是这种情况。您可以通过以下方式确定这是否也是您的问题:
a)使用在线证书检查器检查证书链,例如:http://www.digicert.com/help/
b)使用openssl验证收到的证书链: openssl s_client -showcerts -connect :443您可以在那里看到证书链,它应该包含两个或更多证书,如果结果以类似以下内容结束:验证返回代码: 21 (无法验证第一个证书),您可能会遇到与我类似的问题。
解决方案是修复web服务器配置,以便服务器向主机公开完整的证书链。
发布于 2014-04-09 14:59:40
你的应用程序在Android4.4上运行时可能会有不同的表现,特别是当你将应用程序的targetSdkVersion更新到"19“或更高的时候。
WebView类和相关API的底层代码已经升级为基于Chromium源代码的现代快照。
这带来了各种性能改进、对新HTML5特性的支持以及对WebView内容的远程调试的支持。这次升级的范围意味着如果你的应用程序使用WebView,它的行为在某些情况下可能会受到影响。尽管已知的行为变化被记录在案,并且只有当你将你的应用程序的targetSdkVersion更新到"19“或更高时才会影响你的应用程序--新的WebView在”怪癖模式“下运行,在目标API18和更低的应用程序中提供一些遗留功能-但你的应用程序可能依赖于以前版本的WebView的未知行为。
因此,如果你现有的应用程序使用WebView,重要的是你尽快在Android4.4上测试,并咨询Migrating to WebView in Android 4.4,了解当你将targetSdkVersion更新到"19“或更高版本时,你的应用程序可能会受到什么影响。
发布于 2014-04-10 10:06:57
你试过这样的东西吗?
mWebView.setWebViewClient(new WebViewClient()
{
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); // Ignore SSL certificate errors
}
});https://stackoverflow.com/questions/22475761
复制相似问题