web-dev-qa-db-ja.com

openssl pkcs8のデフォルト形式はRSAプライベートキーを提供します

私のPCでこのコマンドを実行しています(Opensslバージョン:1.0.1):

openssl pkcs8 -inform DER -in file.key -passin pass:12345678a -outform PEM -out key.pem

そして私はこのkey.pemを手に入れました:

-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANCFPVXwO+6qQdOs
...
wVauPfh0cGEf1Kc=
-----END PRIVATE KEY-----

しかし、同じコマンドをサーバー(Opensslバージョン:0.9.8e-fips-rhel5)から実行すると、次の出力が得られます。

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDQhT1V8DvuqkHTrMPFUUAXUl0ihDGoiD86SqK8Z3n19yp1VrJf
...
zHY0343VXnpM2opKwG2E1zgfHfbcLMFWrj34dHBhH9Sn
-----END RSA PRIVATE KEY-----

Base64の内部は異なり、ヘッダーも異なります。

-----BEGIN PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----

最初のものは私にとってはうまくいきますが、0.9.8バージョンで----- BEGIN PRIVATE KEY -----出力を取得するにはどうすればよいですか?

OpenSslパッチノートでこれを見つけました:

デフォルトの秘密鍵形式をPKCS#8に変更します。

それで、それが主な問題になる可能性があります。誰かが私にこれを手伝ってくれることを願っています。秘密鍵を取得する方法は見つかりませんが、BEGIN RSA PRIVATE KEYを取得する方法は見つかりません。

ありがとう

11
Logan

行う openssl pkcs8 -topk8秘密鍵を従来の形式からpkcs#8形式に変換します。

このフォーマット

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

秘密鍵の「SSLeay形式」または「従来の形式」と呼ばれます。

キーの形式がわからないので、genrsaによって生成された秘密キーを使用してアイデアを示します。 OpenSSL 0.9.8xでgenrsaを実行すると、生成されたキーは従来の形式になります。つまり、後

openssl genrsa -out file.key 1024

あなたは伝統的なフォーマットでRSAキーを取得します

-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQC3TyaSzsJO92/Ahq5rxRI1T0JSC0iF...
-----END RSA PRIVATE KEY-----

次に、pkcs8-topk8このキーを従来の形式からpkcs#8形式に変換します。

openssl pkcs8 -topk8 -inform pem -in file.key -outform pem -nocrypt -out file.pem

あなたが得るものはここにあります:

-----BEGIN PRIVATE KEY-----
MIICdQIBADANBgkqhkiG9w0BA...
-----END PRIVATE KEY-----

上記のすべてはOpenSSL 0.9.8xで行われます。従来のフォーマットキーからPKCS#8フォーマットキーを生成する方法を説明します。一方、OpenSSL 1.0.1でいつでもこれを実行して、古いバージョンと互換性のあるキーを作成できます。

openssl rsa -in file.pem -text > key.pem
26
Chiara Hsieh