Android DefaultHttpClient принимает все сертификаты для справки сеанса SSL - PullRequest
3 голосов
/ 06 октября 2010

Я пытаюсь подключиться к локальному HTTPS-серверу с помощью apache DefaultHttpClient на устройстве Android.

 DefaultHttpClient httpclient = new DefaultHttpClient();
 HttpPost httppost = new HttpPost("http://192.168.1.121:4113/services");
 ... header and content filling in ...
 HttpResponse response = httpclient.execute(httppost);

Я получаю сообщение об ошибке «javax.net.ssl ​​SSLException: сертификат недоверенного сервера»когда .execute запускается.Я хочу просто разрешить работу любого сертификата, независимо от того, находится он в цепочке ключей Android или нет.

Я потратил около 40 часов на изучение и поиск обходного пути для этой проблемы.Я видел много примеров того, как это сделать, но до сих пор ни один из них не работал в Android;кажется, они работают только на JAVA.Кто-нибудь знает, как настроить или переопределить проверку сертификата, используемую Apache HttpClient в Android, чтобы он просто утверждал все сертификаты для подключения DefaultHttpClient?

Благодарю вас за добрый ответ

Ответы [ 2 ]

2 голосов
/ 07 марта 2011

Если кто-то все еще пытается выяснить это, я остановился на решении:

HTTPS GET (SSL) с Android и самозаверяющим сертификатом сервера

Прокрутите вниз до решения SimonJ.Это простое прямое решение этой проблемы.

1 голос
/ 24 октября 2010

Посмотрите на этот учебник http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/

Этот учебник основан на HttpClient Apache и объясняет, как использовать SSLSocketFactory для доверия определенным сертификатам в вашем собственном хранилище ключей (также объясняется, как вы можете создать его с помощью BouncyCastleпровайдер).

Я проверил это, и он прекрасно работает.На мой взгляд, это безопасный способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...