8

我对 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 请求的数据,这使我无法使用这种方法。

4

1 回答 1

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/

抱歉回复晚了。刚刚偶然发现你的问题......希望它仍然有帮助。

于 2012-09-11T08:16:55.077 回答