关于Java:具有SSLCaching和Android上的密钥库的HttpClient

HttpClient with SSLCaching and a Keystore on Android

我想使用SSL客户端身份验证和SSL缓存连接到https服务器。据我所知,您只能拥有一个或另一个,而我看不出会有这样的原因。

当前,我使用的是DefaultHttpClient,它带有一个ClientConnectionManager,该客户端连接管理器已通过安装有pkcs12 KeyStore的SSLSocketFactory进行设置,因此我可以执行SSL客户端身份验证。

我还发现了可以传递SSLSessionCache的SSLCertificateSocketFactory.getHttpSocketFactory()。

然后我注册套接字工厂

1
2
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("https",socketFactory , port));

并使用注册表创建一个ClientConnectionManager,然后创建一个HttpClient

1
2
ThreadSafeClientConnManager ccm = new ThreadSafeClientConnManager(httpParameters, registry);
httpClient = new DefaultHttpClient(ccm, httpParameters);

但是我不知道如何给SSLSocketFactory一个SSLSessionCache或SSLCertificateSocketFactory一个密钥库

最后我研究了使用AndroidHttpClient,您可以传递一个将用于SSLCaching的上下文,但是我找不到任何方法来使AndroidHttpClient使用我的ClientConnectionManager。

我错过了什么吗?或者这真的不可能吗?

谢谢


HttpClient具有内置的SSL会话缓存,据我了解,SSLSessionCache用于HttpsURLConnection。

记录得不是很好。