Bouncy Castle Keystore (BKS): java.io.IOException: неправильная версия хранилища ключей

Мне нужно подключиться к веб-сервису на основе REST.

( Https://someurl.com/api/lookup/jobfunction/lang/EN )

В IE или браузере Chrome, когда я пытаюсь получить доступ к этому URL-адресу, я получаю сертификат, которому я должен доверять и принимаю его продолжить. После этого мне нужно ввести имя пользователя и пароль, а затем получить ответ JSON.

То же самое я должен сделать это программно для Android-приложения.

  1. Пробовал с пользовательскими EasySSLSocketFactory и EasyX509TrustManager, Didnt работать. Я получил следующую ошибку: java.security.cert.CertPathValidatorException: привязка доверия для пути сертификации не найдена.

  2. Используйте хранилище ключей BKS, обратите внимание, что mykeystore.bks – пустой файл, прежде чем я выполнил приведенные ниже команды.

    keytool -importcert -v -trustcacerts -file "test.crt" -alias IntermediateCA -keystore "mykeystore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk15on-148.jar" -storetype BKS -storepass abcd1234 keytool -list -keystore "mykeystore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk15on-148.jar" -storetype BKS -storepass abcd1234 

MyHTTPClient.java выглядит следующим образом:

 public class MyHttpClient extends DefaultHttpClient { final Context context; public MyHttpClient(Context context) { this.context = context; } @Override protected ClientConnectionManager createClientConnectionManager() { SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); // Register for port 443 our SSLSocketFactory with our keystore // to the ConnectionManager registry.register(new Scheme("https", newSslSocketFactory(), 443)); return new SingleClientConnManager(getParams(), registry); } private SSLSocketFactory newSslSocketFactory() { try { // Get an instance of the Bouncy Castle KeyStore format KeyStore trusted = KeyStore.getInstance("BKS"); // Get the raw resource, which contains the keystore with // your trusted certificates (root and any intermediate certs) InputStream in = context.getResources().openRawResource(R.raw.mykeystore); try { // Initialize the keystore with the provided trusted certificates // Also provide the password of the keystore trusted.load(in, "abcd1234".toCharArray()); } finally { in.close(); } // Pass the keystore to the SSLSocketFactory. The factory is responsible // for the verification of the server certificate. SSLSocketFactory sf = new SSLSocketFactory(trusted); // Hostname verification from certificate // http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d4e506 sf.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER); return sf; } catch (Exception e) { throw new AssertionError(e); } } 

Когда я вызываю webservice, я получаю следующую ошибку: вызван: java.lang.AssertionError: java.io.IOException: неправильная версия хранилища ключей

Скажите, пожалуйста, что мне нужно сделать, чтобы подключиться к веб-сервису на основе HTTPS, который имеет учетные данные пользователя и пароль. ……

Solutions Collecting From Web of "Bouncy Castle Keystore (BKS): java.io.IOException: неправильная версия хранилища ключей"