1

jks ファイルを使用してキーストアを登録しようとしていますが、「間違ったバージョンのキー ストア」が表示されます。以下のコードで

TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());

        InputStream keyStoreStream=mContext.getResources().openRawResource(R.raw.ssokeystore);
        keyStore.load(keyStoreStream, "<<Password>>".toCharArray());//Getting the error here even giving the right password

        trustManagerFactory.init(keyStore);
        TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustManagers, null);
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

その理由は何でしょうか。私の主な使用例は、証明書を登録することにより、アプリケーションから行われたすべての https 呼び出しを許可することです。

ここにスタックトレースがあります

W/System.err: java.io.IOException: Wrong version of key store.
W/System.err:     at com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi.engineLoad(BcKeyStoreSpi.java:815)
W/System.err:     at java.security.KeyStore.load(KeyStore.java:1484)
W/System.err:     at net.openid.appauthdemo.TrustStoreConfiguration.ssoTtrustStore(TrustStoreConfiguration.java:32)
W/System.err:     at net.openid.appauthdemo.LoginActivity.onCreate(LoginActivity.java:117)
W/System.err:     at android.app.Activity.performCreate(Activity.java:7224)
W/System.err:     at android.app.Activity.performCreate(Activity.java:7213)
W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
W/System.err:     at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
W/System.err:     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
W/System.err:     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:106)
W/System.err:     at android.os.Looper.loop(Looper.java:201)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6810)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

4

2 に答える 2

0

解決する最も簡単な方法 (2021 年 10 月の時点で Android で動作することが保証されています) は、既存の Java KeyStore から BouncyCastle KeyStore (BKS) に切り替えることです。

KeyStore ファイルを開き、KeyStore Explorer (オンラインで入手できる Mac および Windows 用のダウンロード可能な実行可能ファイル) を使用して BKS に切り替えます。

于 2021-10-22T13:11:31.853 に答える