Не доверенный сертификат сервера в Android 2.2, но не 3.0

Я использую провайдера BouncyCastle и Apache HttpClient, чтобы доверять сертификату SSL, как описано Антуаном Хауком здесь.

Приложение, которое я сделал, предназначено для Android 1.5 и отлично работает на эмуляторе и устройстве под управлением 3.0. Однако, когда я пытаюсь протестировать его на 2.2 (Galaxy S), возникает исключение SSLException, «Сертификат не доверенного сервера».

Поскольку нет никаких ошибок, жалующихся на сам BouncyCastle, я предполагаю, что устройство неправильно считывает сертификаты из файла .bks. Возможно ли то, что я пытаюсь использовать, используя BouncyCastle на Android версии 2.2, или нужно просто что-то изменить в рабочем приложении 3.0?

Обновить

Когда я попытался снова запустить приложение сегодня, оно сработало правильно с первого раза. Я пробовал это несколько раз, и иногда он работает правильно, но иногда все еще получает SSLException. Кажется, что нет какой-либо закономерности, когда это происходит - это может срабатывать несколько раз подряд, а затем неоднократно давать сбой.


person caroline    schedule 17.07.2011    source источник
comment
Используете ли вы встроенные версии Apache HTTPclient или внешние, например 4.1.1?   -  person Ognyan    schedule 17.07.2011
comment
Где хранится БКС? На SDCard в /res/raw?   -  person Ognyan    schedule 17.07.2011
comment
Я использую встроенный HttpClient, а bks хранится в res/raw.   -  person caroline    schedule 18.07.2011


Ответы (1)


Возможно, поставщик сертификата не является доверенным, попробуйте проверить доверенных поставщиков.

person Dr.    schedule 17.07.2011
comment
Поставщику следует доверять, поскольку сертификаты были добавлены в хранилище ключей, которому должно доверять приложение. С самими сертификатами/хранилищем ключей проблем нет, потому что приложение работает на эмуляторе и устройстве 3.0. - person caroline; 17.07.2011
comment
Тем не менее, я бы последовал совету доктора, потому что это означает, что это сообщение об ошибке. Внимательно проверьте цепочку сертификатов, отправленную сервером, и ваше хранилище доверенных сертификатов. Вполне вероятно, что чего-то не хватает, например, промежуточного сертификата. - person President James K. Polk; 17.07.2011
comment
Путь сертификата содержит корневой сертификат, промежуточный сертификат и сертификат веб-сайта. Я уверен, что в хранилище доверенных сертификатов есть как корневой, так и промежуточный сертификаты. Может ли приложение потребовать, чтобы сертификат веб-сайта также был включен? - person caroline; 18.07.2011