![証明書チェーンから秘密鍵をエクスポートするにはどうすればよいですか?](https://rvso.com/image/1414689/%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%81%8B%E3%82%89%E7%A7%98%E5%AF%86%E9%8D%B5%E3%82%92%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
キーストアを作成し、そのキーストアから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
パラメータを追加することであり、これはうまく機能し、自己署名証明書でも機能します。