Я использую библиотеку Apache HttpClient для настройки соединения https. К сожалению, Android выдает ошибку «Ненадежный сертификат сервера». Если я захожу на сайт с помощью браузера телефона, он правильно проверяет сертификат, что заставляет меня поверить, что мне нужно, чтобы HttpClient «знал» о корневых сертификатах на телефоне. Это мой код установки HttpClient:
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout( params, 20000 );
HttpConnectionParams.setSoTimeout( params, 20000 );
HttpProtocolParams.setVersion( params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset( params, HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue( params, false);
SchemeRegistry schReg = new SchemeRegistry();
schReg.register( new Scheme( "http", PlainSocketFactory.getSocketFactory(), 80 ) );
schReg.register( new Scheme( "https", SSLSocketFactory.getSocketFactory(), 443 ) );
ClientConnectionManager conMgr = new ThreadSafeClientConnManager( params, schReg );
DefaultHttpClient defaultHttpClient = new DefaultHttpClient( conMgr, params );
return ( defaultHttpClient );
Как видите, я ничего особенного не делаю с SSLSocketFactory. Как я могу заставить библиотеку HttpClient проверять мой сайт, не добавляя пользовательский сертификат в хранилище ключей ?. Должен ли я создать собственный SSLSocketFactory и загрузить cacerts.bks с телефона Android? В таком случае у меня могут возникнуть проблемы с разными паролями для хранилища ключей на разных телефонах?
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Этот материал SSL довольно сложен для меня.