当使用下面版本的KitKat的WebView访问以下代码时,我可以绕过带有错误代码的https URL时绕过SSL错误
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
但不适用于KitKat浏览器。有什么想法要解决吗?
最佳答案
我最近也遇到了这个问题,该问题没有记录,但似乎在Android 4.4 KitKat上调用onReceivedSslError方法取决于SSL错误的类型。我检查了以下两种情况:
对我而言,潜在的问题是,Web服务器未公开完整的证书链,而仅公开了最后一个证书,只要设备已将所有证书存储在设备证书存储中,则该设备将负责验证整个链的责任。 Android设备并非如此。
您可以通过以下方式确定这是否也是您的问题:
a)使用在线证书检查器检查证书链,例如:http://www.digicert.com/help/
b)使用openssl验证收到的证书链:
openssl s_client -showcerts -connect:443
您可以在那里看到证书链,该证书链应包含两个或多个证书,并且如果结果以类似以下内容结尾:
验证返回码:21(无法验证第一个证书),
您可能会遇到与我类似的问题。
解决方案是修复Web服务器配置,以便服务器将完整的证书链公开给主机。
关于ssl - 覆盖onReceivedSslError不适用于Android KitKat Web View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22475761/