このトピックに関するリソースはたくさんありますが、この少し特殊なケースをカバーするリソースは見つかりませんでした。
4つのファイルがあります。
そして、それらを新しいキーストアにインポートしたいと思います。
一部のサイトでは、DER形式を使用して1つずつインポートすることを推奨していますが、キーが認識されないため、失敗しました。
別のサイトは、インポートのために実行する特別な「ImportKey」クラスを提案しました。これは、チェーンが壊れているのを見るまで機能しました。つまり証明書のチェーンの長さは1で、中間とcaは無視されます。
一部のサイトではPKCS7を推奨していますが、そこからチェーンを取得することもできません。他の人はPKCS12形式を提案していますが、私のテストでは、チェーン全体を取得することもできませんでした。
アドバイスやヒントは大歓迎です。
これは完璧ではないかもしれませんが、私はkeytool
の使用について、シナリオに合わせて変更したいくつかの注意事項を持ちました。
ルートまたは中間CA証明書を既存のJavaキーストアにインポートします:
keytool -import -trustcacerts -alias root -file ca_geotrust_global.pem -keystore yourkeystore.jks
keytool -import -trustcacerts -alias root -file intermediate_rapidssl.pem -keystore yourkeystore.jks
インポートする前に、証明書と秘密鍵を1つのファイルに結合します。
cat certificate.pem privatekey.pem > combined.pem
これにより、次のようなファイルが生成されます。
証明書を開始
...
証明書を終了
RSAプライベートキーの開始
...
RSAプライベートキーの終了
署名済みのプライマリ証明書とキーを既存のJavaキーストアにインポートします:
keytool -import -trustcacerts -alias yourdomain -file combined.pem -keystore yourkeystore.jks
All.pemのように、すべての* .pemファイルを1つのpemファイルに連結します。次に、秘密鍵+ all.pemを使用して、p12形式でキーストアを作成します。
openssl pkcs12 -export -inkey private.key -in all.pem -name test -out test.p12
次に、p12をjksにエクスポートします
keytool -importkeystore -srckeystore test.p12 -srcstoretype pkcs12 -destkeystore test.jks
keytoolは、上記で提案したように、単一の(結合された)ファイルから証明書と秘密鍵をインポートする方法を提供していません。正常に動作しますが、証明書のみがインポートされ、秘密鍵は無視されます。 keytool -list -v -keystore yourkeystore.jks
で確認できます。ドメインエントリのタイプは、PrivateKeyEntryではなくTrustedCertEntryです。
したがって、最初の問題を解決するには、まずopenssl(または同様のツール)を使用してPKCS#12キーストアを作成し、次にkeytool -importkeystore
を使用してキーストアをインポートする必要があります。