8

Sun の keytool を使用して Bouncy キャッスル キーストアを作成し、そこに証明書をインポートしています。keytool は、弾む城の形式でキーストアを生成します。

次に、Bouncy 城のキーストアを Android プログラムにインポートしようとしました。「BKS」キーストアのインスタンスを取得できますが、キーストアでロードを呼び出すとスローされます

"java.io.IOException: Wrong version of key store".

これがコードです

KeyStore keyStore = KeyStore.getInstance("BKS");
InputStream is = new FileInputStream("/mnt/sdcard/ArcGIS/mystore.bks");
keyStore.load(is, "abcdef".toCharArray());

http://www.bouncycastle.org/latest_releases.htmlからダウンロードした Bouncy Castle JAR のさまざまなバージョンを試しました。

私は何を間違っていますか?

ありがとう、ランジット

4

3 に答える 3

22

最新の BouncyCastle ライブラリを使用して生成されたキーストアを開こうとすると、Android 4.0.3 (API バージョン 15) に同梱されている BouncyCastle のバージョンが失敗するようです。を使用してキーストアを作成するbcprov-jdk15on-147.jarと、サンプルの Android アプリがjava.io.IOException: Wrong version of key storeエラーで失敗しました。

ただし、キーストアがbcprov-jdk16-146.jarライブラリで作成された場合、アプリケーションによってロードされる可能性があります。私の解決策は、この古いライブラリでキーストアを作成することでした。

おそらくこれは、古い API バージョンにも当てはまります。キーストアを作成するときに古いバージョンの BouncyCastle を試してください。

于 2012-05-30T02:04:06.547 に答える
4

解決しました。keytool コマンドに「-storetype BKS」引数が欠落していたため、BKS キーストア ファイルは生成されましたが、おそらく無効でした。

于 2011-03-03T22:39:02.350 に答える
1

この問題は、BKS 証明書のパスワードの長さが原因であり、7 文字以下にする必要があります。これは、米国の政策および米国の輸出管理の問題です (技術的な理由によるものではありません)。

7 文字の長さを使用して証明書を再エクスポートすると、機能します。

それが役に立てば幸い

于 2012-09-21T10:32:59.427 に答える