Я не думаю, что ваша проблема с хранилищем ключей BouncyCastle;Я думаю, что проблема в сломанном пакете javax.net.ssl в Android.Хранилище ключей BouncyCastle вызывает крайнее раздражение, поскольку Android изменил поведение Java по умолчанию, нигде не задокументировав его, и удалил провайдера по умолчанию, но он работает.
Обратите внимание, что для аутентификации SSL может потребоваться 2 хранилища ключей.Хранилище ключей «TrustManager», которое содержит сертификаты CA, и хранилище ключей «KeyManager», которое содержит открытые / закрытые ключи вашего сайта клиента.(Документация несколько расплывчата относительно того, что должно быть в хранилище ключей KeyManager.) Теоретически вам не нужно хранилище ключей TrustManager, если все ваши сертификаты подписаны «хорошо известными» органами сертификации, например, Verisign, Thawte,и так далее.Дайте мне знать, как это работает для вас.Вашему серверу также потребуется CA для того, что использовалось для подписи вашего клиента.
Я не смог создать соединение SSL с использованием javax.net.ssl.Я отключил клиентскую SSL-аутентификацию на стороне сервера и все еще не смог создать соединение.Поскольку моей конечной целью был HTTPS GET, я пробовал и пытался использовать HTTP-клиент Apache, который поставляется в комплекте с Android.Это вроде сработало.Я мог установить соединение HTTPS, но я все еще не мог использовать аутентификацию SSL.Если я включу SSL-аутентификацию клиента на моем сервере, соединение не будет установлено.Я не проверял код HTTP-клиента Apache, но подозреваю, что они используют собственную реализацию SSL и не используют javax.net.ssl.