0

だからここに私がやろうとしていることがあります:

  • SSL サーバーに接続します

  • 2 つの証明書が送信され、そのうちの 1 つは自己署名されています

この段階では、問題はありません。

X509Certificate[] myTwoCerts; 
// with 2 certificates in there, and I'm sure it's there because, I print them in my console.
  • ここで、内部に 2 つの証明書を含む .p12 ファイルを作成したいと考えています。

今まで、私は次のようなことを試しました:

KeyStore pkcs12Store = KeyStore.getInstance("PKCS12");
pkcs12Store.load(null, null);
X509Certificate cert1 = myTwoCerts[0];
X509Certificate cert2 = myTwoCerts[1]
String alias1 = "FIRST";
String alias2 = "SECOND";
pkcs12Store.setCertificateEntry(alias1, cert2);
pkcs12Store.setCertificateEntry(alias2, cert2);

しかし、次の例外が発生します。

Exception in thread "main" java.security.KeyStoreException: TrustedCertEntry not supported

誰でも私を助けてくれますか??

4

2 に答える 2

1

JavaのPKCS12キーストアを使用して、秘密鍵のない証明書または証明書チェーンを格納することはできません。

JCA リファレンス ガイドの次の注記を参照してください。

「pkcs12」は別のオプションです。これは、RSA PKCS12 Personal Information Exchange Syntax Standard に基づくクロス プラットフォーム キーストアです。この標準は、主に、ユーザーの秘密鍵、証明書、およびその他の秘密を格納または転送することを目的としています。JDK 6 の時点では、信頼できる証明書を「pkcs12」に格納するための標準はまだ確立されていないため、信頼できる証明書には「jks」または「jceks」を使用する必要があります。

(JDK 6 について言及しているにもかかわらず、これはまだ JDK 7 のドキュメントにあります。)

秘密鍵+証明書(チェーン)をJavaのPKCS#12ストアに格納したい場合、秘密鍵が必要であり、setKeyEntryメソッドを使用する必要があります。

于 2014-03-21T14:32:27.530 に答える