Android Неправильная версия хранилища ключей - PullRequest
0 голосов
/ 27 ноября 2018

Я пишу приложение для Android, которое будет использовать SSL для связи с сервером Linux x86, работающим на Java.Моя цель - зашифровать транспортный уровень, поэтому я решил использовать SSL.Я хотел бы, чтобы клиент генерировал свой собственный ключ при каждом новом подключении к веб-серверу.

Я получаю исключение:

W/System.err: java.io.IOException: Wrong version of key store.
        at com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi.engineLoad(BcKeyStoreSpi.java:815)
        at java.security.KeyStore.load(KeyStore.java:1484)
        at com.example.jncy.ssltest.MainActivity$1.run(MainActivity.java:82)
        at java.lang.Thread.run(Thread.java:764)
Application terminated. 

Если вы проверите принятое решение этого вопроса,это настройки, которые у меня есть для клиента и сервера, и как я сгенерировал свой файл .p12. SSLServerSocket и настройка сертификата

Из проведенного мною исследования я узнал, что Android использует версию KeyStore BKS, а моя Java на сервере использует pkcs12 версия.Я не совсем понимаю, что происходит, но я предполагаю, что хранилища ключей должны быть одного типа?(Здесь я запутался, потому что думал, что хранилища ключей просто хранят сертификаты)

Когда я пытаюсь загрузить pkcs12 в Android, я все равно получаю то же исключение.

            KeyStore trustStore = KeyStore.getInstance("pkcs12");
            Log.d("TYPE", KeyStore.getDefaultType());

            InputStream tstore = getResources().openRawResource(idcert);//MainActivity.class.getResourceAsStream("/"+"servercert.p12");
            trustStore.load(tstore, "abc123".toCharArray());
            tstore.close();
...