Неправильное хранилище ключей при выполнении вызова https
Привет, коллеги-андроиды.
Я пытаюсь сделать безопасный вызов https из моего кода Android. Звонок идет нормально на эмуляторе, но на самом устройстве Samsung Galaxy я получаю ошибку SSL.
Я использовал метод сумасшедших бобов для обработки цетификата.
Вот ссылка crazy bobs: http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html.
Проблема в том, что я получаю сообщение об ошибке: "неправильная версия хранилища ключей" внутри настраиваемого объекта SSLSocketFactory.
Любые предложения о том, что делать, чтобы исправить это?
Спасибо.
Ответы
Ответ 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 и исправлена.
Дополнительные пояснения здесь.