web-dev-qa-db-ja.com

PFX(PKCS#12)ファイルからのRSA秘密鍵の作成

Pkcs#12ファイルから秘密RSAキーを取得しようとしています。

標準を実行してみました

openssl pkcs12 -nocerts -out priv.pem -in domain.com.pfx

ただし、これにより以下のようなキーファイルが生成されます。

Bag Attributes
Microsoft Local Key set: <No Values>
localKeyID: 01 00 00 00 
friendlyName: xxxxxxxx
Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
Key Attributes
X509v3 Key Usage: 10
-----BEGIN ENCRYPTED PRIVATE KEY-----

私がそれをカヌーに入れる必要があるサーバーはキーファイルを処理し、サンプルデータを見ると次のようなファイルが表示されます

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,2CF27DD60B8BB3FF

そして当然のことながら、キーは両方のファイルに存在します。しかし、サーバーはRSA秘密鍵ファイルのみを受け入れるようで、取得した出力はX509v3ファイルのように思えますが、これをRSA秘密鍵ファイルに取得する方法を知っている人はいますか?

18
Dorana

まあ-テキストエディターを使用して問題のある行を削除するのが最も簡単な場合があります。それ以外の場合、以下はバッグの属性をクリーンアップします。

openssl pkcs12 -in x.pfx  -nocerts -nodes -passin pass:123456 | openssl rsa -out privkey.pem

der/netの取得にも使用できます

openssl pkcs12 -in x-fred.p12  -nocerts -nodes -passin pass: | openssl rsa -outform DER -out privkey.der

これは実際にあなたが望むフォーマットかもしれません。ただし、ツールがパスワードなしの秘密キーを受け入れないことはかなり一般的です(多くのツールは、文字数が4または6でない場合、警告なしに失敗します)。したがって、それらの場合、テールエンドを次のように変更します。

.... | openssl rsa -passout pass:123456 -out privkey.pem
.... | openssl rsa -passout pass:123456 -out privkey.der -outform der
26

これは私にとってはうまくいきます:

openssl pkcs12 -in "$1" \
    -nocerts -nomacver \
    -passin file:<(cat "$pw") \
    -passout file:<(cat "$pw") |
sed -n '/^-----BEGIN ENCRYPTED PRIVATE KEY-----/,/^-----END ENCRYPTED PRIVATE KEY-----/p'
0
ceving

Windows 7 64ビットでは、コマンドを使用できますが、MacおよびLinuxでは、次の手順を実行する必要があります。

1、pemファイルを作成します。
openssl pkcs12 -in xxx.pfx -out xxx.pem

2、rsa秘密鍵を作成します。
openssl pkcs12 -in xxx.pfx -passin pass:yourpassword | openssl rsa -des3 -passout pass:yourpassowrd -out xxx.key

この手順により、次の内容のキーファイルが作成されます。 "----- BEGIN RSA PRIVATE KEY ----- Proc-Type:4、ENCRYPTED DEK-Info:DES-EDE3-CBC、2CF27DD60B8BB3FF"

3、テキストエディターで.pemおよび.keyファイルを開き、.pemファイルのOriginキー "----- BEGIN ENCRYPTED PRIVATE KEY -----"を.keyファイルのrsaキーで置き換えます。 。

0
schumyxp