Неправильное хранилище ключей при выполнении вызова https - программирование

Неправильное хранилище ключей при выполнении вызова https

Привет, коллеги-андроиды.

Я пытаюсь сделать безопасный вызов https из моего кода Android. Звонок идет нормально на эмуляторе, но на самом устройстве Samsung Galaxy я получаю ошибку SSL.

Я использовал метод сумасшедших бобов для обработки цетификата. Вот ссылка crazy bobs: http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html.

Проблема в том, что я получаю сообщение об ошибке: "неправильная версия хранилища ключей" внутри настраиваемого объекта SSLSocketFactory.

Любые предложения о том, что делать, чтобы исправить это? Спасибо.

4b9b3361

Ответ 1

Вы создали свое хранилище ключей в формате Bouncy Castle? Все эти 3 параметра являются обязательными при создании хранилища ключей с помощью keytool (и особенно тип хранилища ключей должен быть BKS):

  -storetype BKS
  -provider org.bouncycastle.jce.provider.BouncyCastleProvider
  -providerpath /path/to/bouncycastle.jar

Android использует версию 1.46 от bouncycastle, убедитесь, что вы используете эту версию при создании своего хранилища ключей Версия 1.46 найдена здесь

Ответ 2

В случае, если кто-то наткнется на это, а @Jcs отличный ответ не решит его: у меня возникли те же проблемы, и оказалось, что я не установил SSL-сертификаты на своем веб-сервере правильно. Я получил идею при использовании digicert Инструмент тестирования SSL: Мой поставщик сертификатов использовал обычную практику подписания сертификатов сервера с помощью промежуточный ЦС. После установки цепочки сертификатов (которая связывает промежуточный центр сертификации эмитента с их корневым центром сертификации) все работает нормально.

Ответ 3

Легкой альтернативой является использование Portecle для создания BKS:

  • Загрузить Поставщик Boucycastle 1.46
  • Замените bcprov.jar в каталоге установки Portecle (пример: C:\Program Files (x86)\Portecle\bcprov.jar). Это же именование требуется.
  • Перезапустите Portecle и создайте свой супермаркет BKS.

Примечание. Для меня проблема была на Android 4.0.3 и исправлена.

Дополнительные пояснения здесь.