このハウツーでは、OpenSSLを使用してPKCS#12ファイルから情報を抽出する方法について説明します。 PKCS#12(別名PKCS12またはPFX)は、証明書チェーンと秘密鍵を単一の暗号化可能なファイルに格納するためのバイナリ形式です。 PKCS#12ファイルは、WindowsおよびmacOSコンピューターで証明書と秘密鍵をインポートおよびエクスポートするために一般的に使用され、通常はファイル名拡張子が付きます .p12
or .pfx
.
さらに役立つハウツーと最新のサイバーセキュリティニュースについては、SSL.comのニュースレターにサインアップしてください。
OpenSSLとは何ですか?
OpenSSLは、で作業するための非常に便利なオープンソースのコマンドラインツールキットです。 X.509 証明書、証明書署名要求(CSRs)、および暗号化キー。 LinuxやmacOSなどのUNIXバリアントを使用している場合は、OpenSSLがすでにコンピューターにインストールされている可能性があります。 WindowsでOpenSSLを使用する場合は、有効にすることができます Windows 10のLinuxサブシステム またはインストールする Cygwin。 簡単にもできます 作ります openSSLを使用したPKCS#12ファイル。
SSL.comは多種多様な SSL /TLS サーバー証明書 HTTPSWebサイトの場合。
ビデオ
以下に示すすべての例で、実際に作業しているファイルの名前を置き換えてください INFILE.p12
, OUTFILE.crt
, OUTFILE.key
.
画面上のPKCS#12情報の表示
PKCS#12ファイルのすべての情報を画面にダンプするには PEM形式、次のコマンドを使用します。
openssl pkcs12 -info -INFILE.p12 -nodes
次に、PKCS#12ファイルのパスワードの入力を求められます。
インポートパスワードを入力:
PKCS#12ファイルの作成時に入力したパスワードを入力し、 enter
。 OpenSSLは、ファイル内の証明書と秘密鍵を画面に出力します。
バッグの属性localKeyID:AC 3E 77 9A 99 62 84 3D 77 CB 44 0D F9 78 57 7C 08 28 05 97 subject = / CN = Aaron Russell/emailAddress=*********@gmail.com issuer = / C = US / ST =テキサス/ L =ヒューストン/ O = SSL株式会社/ CN = SSL.comクライアント証明書、中間CA RSA R1 ----- BEGIN CERTIFICATE ----- MIIF1DCCA7ygAwIBAgIQcOrAJCMayJsZBKJsyz / aQDANBgkqhkiG9w0BAQsFADB + MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24x ETAPBgNVBAoMCFNTTCBDb3JwMTowOAYDVQQDDDFTU0wuY29tIENsaWVudCBDZXJ0 ... bwK6ABAZUq6QcvhD0LYsXya + ncDCR6wxb9E0DWd4ATQMzxGTu / yE3kT + 9Ef6IY + n armh3HZUfan2Hb64YD0tjLMca / PC + sKAZu28gB / 3HQRHIFugvh6RO3bIoorl0jUg 1MlKEY _--- PRSUHL2JEND_PRWUWUJwUcwUwwwww
秘密鍵を暗号化する
秘密鍵を暗号化し、出力前にパスワードで保護したい場合は、単に -nodes
コマンドからのフラグ:
openssl pkcs12 -info -INFILE.p12 内
この場合、OpenSSLが証明書を出力した後、新しいパスワードを入力して確認するように求められ、秘密鍵が暗号化されます(鍵のテキストが -----BEGIN ENCRYPTED PRIVATE KEY-----
):
PEMのパスフレーズを入力します。 - 検証をPEMのパスフレーズを入力します。----- BEGIN ENCRYPTED PRIVATE KEY ----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIGwhJIMXRiLQCAggA MBQGCCqGSIb3DQMHBAiXdeymTYuedgSCBMjwGg78PsqiNJLfpDFbMxL98u3tK9Cs ... SGVCCBj5vBpSbBXAGbOv74h4satKmAMgGc8SgU06geS9gFgt / wLwehMJ / H4BSmex 4S / 2tYzZrDBJkfH9JpggubYRTgwfAGY2BkX03dK2sqfu + QVTVTKMj2VI0sKcFfLZ BDW = ----- END暗号化プライベートキー-----
証明書または秘密鍵のみを抽出
秘密鍵のみを出力したい場合は、 -nocerts
コマンドへ:
openssl pkcs12 -info -INFILE.p12 -nodes -nocerts
証明書のみが必要な場合は、 -nokeys
(私たちは秘密鍵を気にしていないので、安全に省略できます -nodes
):
openssl pkcs12 -info -INFILE.p12 -nokeys
証明書と秘密鍵をファイルに保存する
証明書と秘密鍵をPKCS#12ファイルからエクスポートし、出力ファイル名を指定することにより、PEM形式で新しいファイルに保存できます。
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -ノード
ここでも、PKCS#12ファイルのパスワードの入力を求められます。 以前と同様に、削除することで秘密鍵を暗号化できます -nodes
コマンドからのフラグおよび/または追加 -nocerts
or -nokeys
秘密鍵または証明書のみを出力します。 したがって、秘密鍵ファイルを生成するには、次のコマンドを使用できます。
openssl pkcs12 -in INFILE.p12 -out OUTFILE.key -nodes -nocerts
そして、証明書のみを含むファイルを作成するには、これを使用します:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nokeys
秘密鍵をPKCS#1形式に変換
上記の例はすべて、OpenSSLのデフォルトで秘密鍵を出力します PKCS#8 フォーマット。 あなたが必要と知っているなら PKCS#1 代わりに、OpenSSLのPKCS#12ユーティリティの出力を、キータイプに応じてRSAまたはECユーティリティにパイプすることができます。 以下の両方のコマンドは、PKCS#1形式でキーファイルを出力します。
RSA
openssl pkcs12 -in INFILE.p12 -nodes -nocerts | openssl pkcsXNUMX -in INFILE.pXNUMX -nodes -nocerts | openssl pkcsXNUMX -in INFILE.pXNUMX -nodes -nocerts openssl rsa -out OUTFILE.key
ECDSA
openssl pkcs12 -in INFILE.p12 -nodes -nocerts | openssl pkcsXNUMX -in INFILE.pXNUMX -nodes -nocerts | openssl pkcsXNUMX -in INFILE.pXNUMX -nodes -nocerts openssl ec -out OUTFILE.key
注: PKCS#8とPKCS#1の秘密鍵ファイルの違いは、テキストの最初の行を見ればわかります。 PKCS#1ファイルはアルゴリズムを指定します:
-----BEGIN RSA PRIVATE KEY-----
PKCS#8ファイルはアルゴリズムを示しておらず、暗号化されている場合もあります。
-----BEGIN PRIVATE KEY-----
or
-----BEGIN ENCRYPTED PRIVATE KEY-----