36

httpsリクエストをしたいのですが。

私はbouncycastleを使用して、次のようなキーストアを生成します。

keytool -importcert -trustcacerts -alias ludevCA -file lu_dev_cert.crt -keypass mypass -keystore keystore.bks -storepass mypass -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath bcprov-jdk15on-146.jar  

そして、keylistコマンドは正しい値を返します。

しかし、私がするとき:

KeyStore ks = KeyStore.getInstance("BKS");
InputStream in = getResources().openRawResource(R.raw.keystore);  
ks.load(in, "mypass".toCharArray());

エラーがあります:

wrong version of keystore

いくつかのバージョンのbouncycastを使用しようとしましたが、結果は同じです。キーサイズ1024も定義しようとしましたが、何も変わりません。

何か案は ?

4

6 に答える 6

33

Android : SSL 証明書の信頼

  -storetype BKS
  -provider org.bouncycastle.jce.provider.BouncyCastleProvider
  -providerpath /path/to/bouncycastle.jar

キーストアを作成するときは、このバージョンを使用してください: ここにあるバージョン 1.46

役に立ちますように...

于 2012-06-20T10:57:39.500 に答える
29

キーストアのタイプを BKS から BKS-v1 に変更する必要があります (BKS-v1 は BKS の古いバージョンです)。ここで述べたようにBKSバージョンが変更されたため

はるかに簡単な別の解決策があります。

  1. Portecle の使用:
  • ダウンロード Portecle http://portecle.sourceforge.net/
  • パスワードと portecle を使用して bks ファイルを開きます
  • ツール>>キーストアタイプの変更>> BKS-v1を実行
  • ファイルを保存する
  1. KeyStore Explorerを使用できます

新しいファイルは BKS-v1 でエンコードされ、エラーは表示されなくなります。キーストアの種類を変更するには、キーストア エクスプローラーを開き、ファイルに移動しTools -> Change KeyStore Typeて保存します。

注:
Android はさまざまな BKS バージョンで動作します。たとえば、BKS を必要とする API 23 とは対照的に、API 15 は BKS-1 を必要とするため、両方のファイルをアプリに配置する必要がある場合があります。

このコードを使用して、API レベルに応じてそれらを切り替えることができます。

int bks_version;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    bks_version = R.raw.publickey; //The BKS file
} else {
    bks_version = R.raw.publickey_v1; //The BKS (v-1) file
}
KeyStore ks = KeyStore.getInstance("BKS");
InputStream in = getResources().openRawResource(bks_version);  
ks.load(in, "mypass".toCharArray());
于 2015-10-18T12:19:40.013 に答える
5

最後に、Windowsでグラフィックエディター(KeyStore Explorer)を使用しましたが、機能しています。

Java/Mac のバージョンの問題でエラーが発生した可能性があります

于 2012-06-27T14:05:35.977 に答える
0

使用する:

KeyStore.getInstance("BKS");

また

KeyStore.getInstance("PKCS12");
于 2018-05-13T08:24:11.993 に答える