HttpClient с SSLCaching и хранилищем ключей на Android

#java #android #ssl #httpclient

#java #Android #ssl #httpclient

Вопрос:

Я хочу установить соединение с сервером https, используя аутентификацию клиента SSL и кэширование SSL. Насколько я могу судить, у вас может быть только один или другой, и я не вижу причины, почему это было бы.

В настоящее время я использую DefaultHttpClient, который использует ClientConnectionManager, который я настроил с помощью SSLSocketFactory, загруженного с хранилищем ключей pkcs12, чтобы я мог выполнить проверку подлинности клиента SSL.

Я также нашел SSLCertificateSocketFactory.getHttpSocketFactory(), который может быть передан SSLSessionCache.

Затем я регистрирую фабрику сокетов

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

и используйте реестр, чтобы создать ClientConnectionManager, а затем HttpClient

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

но я не знаю, как предоставить либо SSLSocketFactory SSLSessionCache, либо SSLCertificateSocketFactory хранилище ключей

Наконец, я рассмотрел возможность использования AndroidHttpClient, которому вы можете передать контекст, который он будет использовать для SSLCaching, но я не могу найти способ заставить AndroidHttpClient использовать мой ClientConnectionManager.

Я что-то упускаю или это действительно невозможно?

Спасибо

Ответ №1:

В HttpClient встроено кэширование сеансов SSL, SSLSessionCache предназначен для HttpsURLConnection, насколько я понимаю.

Это не очень хорошо документировано, не так ли.