証明書チェーンから秘密鍵をエクスポートするにはどうすればよいですか?

証明書チェーンから秘密鍵をエクスポートするにはどうすればよいですか?

キーストアを作成し、そのキーストアからCSRファイルを生成し、CAから署名付き証明書を受け取ったら、ルート証明書と中間証明書をキーストアにインポートし、最終的に署名付き証明書を作成します。署名付き証明書を追加した後、「証明書応答がキーストアにインストールされました」という応答を受け取りました。この形式では、Tomcatでキーストアを使用できますが、別のアプリケーションコンテナでは、pemエンコードされたファイルを含む秘密鍵のみが必要です。そして

keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs -srcstoretype JKS -deststoretype PKCS12

openssl pkcs12 -in server.pkcs -out server.pem

動作していないようです。秘密鍵ではなく証明書情報のみを含む pem ファイルを取得しています。

では、証明書チェーンを確立した後に秘密鍵をエクスポートすることは可能ですか? 可能であれば、どのようにすればよいですか?

答え1

使用したopenssl pkcs12コマンドは秘密鍵もエクスポートする必要があります

openssl pkcs12 -in server.pkcs -out server.pem

p12 入力ファイルには秘密鍵が含まれていないと思われます。

p12 ファイルからキーをエクスポートするときに、何らかの警告が表示されませんか。

重要なことの 1 つは、JKS が別々のキー パスワードとストア パスワードをサポートしているように見えることです。JKS から p12 をエクスポートすると、p12 のパスワードがキーのパスワードと異なることがあります。これは openssl ではサポートされていないようです (試してみました)。その結果、「不正な復号化」エラーが発生します。キー パスワードが p12 パスワードと同じであることを確認する必要があります。

答え2

証明書チェーンから秘密鍵をエクスポートするには、次のクエリを使用します。

keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs 
-srcstoretype JKS -deststoretype PKCS12

openssl pkcs12 -in thekeystore.p12 -nocerts -nodes -out serverkey.pem

唯一の違いは-nodes -nocertsパラメータを追加することであり、これはうまく機能し、自己署名証明書でも機能します。

関連情報