バッグ属性なしでPEM形式でPFXからCA証明書チェーンをエクスポートする方法


31

完全な証明書チェーンと秘密キーを含むPKCS12ファイルがあります。アプリケーション用に3つのファイルに分割する必要があります。必要な3つのファイルは次のとおりです(PEM形式)。

  • 暗号化されていないキーファイル
  • クライアント証明書ファイル
  • CA証明書ファイル(ルートおよびすべての中間)

これは私が実行しなければならない一般的なタスクなので、出力を手動で編集せずにこれを実行する方法を探しています。

私は次を試しました:

openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.cer>

これは正常に機能しますが、出力にはバッグ属性が含まれており、アプリケーションはそれを処理する方法を知りません。

いくつかの検索の後、バッグの属性を取り除くために結果をx509に渡す提案された解決策を見つけました。

openssl x509 -in <clientcert.cer> -out <clientcert.cer>

これは機能しますが、cacertファイルで問題が発生します。出力ファイルには、チェーン内の3つの証明書のうちの1つのみが含まれます。

pkcs12コマンドの出力にbag属性を含めることを避ける方法、またはx509コマンド出力にすべての証明書を含める方法はありますか?さらに、x509で実行するのが最も簡単な解決策である場合、ファイルを2回書き込むのではなく、pkcs12からの出力をx509にパイプする方法はありますか?

回答:


36

私が最終的に解決したのは、sedにパイプすることでした。

openssl pkcs12 -in <filename.pfx> -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <cacerts.cer>

ありがとう!これで今日は少し時間が節約できました!;-)
ジムP.

どうもありがとうございます!
PaulJ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.