Android 4 ICS上带有SSL客户端证书的WebView

时间:2012-05-21 10:34:01

标签: android ssl https webview certificate

我在Android上使用原生WebView时遇到问题。我需要使用SSL客户端证书对站点进行身份验证。 Android WebView似乎不支持这一点。作为一种解决方法,我使用了WebView的修改版本:

https://github.com/yonekawa/webview-with-client-certificate

修改后的WebView通过将正确配置的SslSocketFactory注入标准Android WebView来工作。这适用于Android 2.x设备。但是,使用Android 4 ICS它不再起作用了。 SslSocketFactory仍在ICS中,但似乎它不再使用了。

所以我的问题是:有没有人成功在ICS上配置Android WebView,以便它可以使用客户端证书?或者有其他选择吗?

我已经尝试过:

  • 将SSL客户端证书导入Android密钥库,只使用WebView而不进行任何修改。这不起作用,客户端证书不随请求一起发送。但它可以在本机浏览器中使用。

  • 使用HttpClient自己创建SSL连接,获取站点的HTML并将其交给WebView。这基本上有效,但是我需要拦截WebView发出的所有请求并自己处理它们。但是,WebView不提供POST请求的数据,这使得这种方法对我来说无法使用。

1 个答案:

答案 0 :(得分:4)

我认为你想要的是覆盖以下隐藏方法:

public void onReceivedClientCertRequest(WebView view,
ClientCertRequestHandler handler, String host_and_port) {

默认情况下,这将取消请求。

我在此示例后面使用此方法来使用隐藏的API: http://devmaze.wordpress.com/2011/01/19/using-com-android-internal-part-5-summary-and-example/

对不起,迟到了。只是偶然发现了你的问题...... 希望它仍然有帮助。