2016-11-26 10 views
0

私はRSAキーの生成と操作でopensslを研究しています。第IキーPEM形式でエンコードされたペアが、暗号化されていない生成:Openssl RSAキーPEMとDER変換 - 一致しません

openssl genpkey -algorithm RSA -out key.pem -pkeyopt rsa_keygen_bits:2048 

そしてIは、DERフォーマットに変換:

openssl rsa -inform PEM -outform DER -in key.pem -out key1.cer 

そしてIは、符号化されたバックPEMにそれを変換:

openssl rsa -inform DER -outform PEM -in key1.cer -out key2.pem 

今、私が2つを比較すると、それらは内容が異なります(BASE64エンコードされたテキスト)。ファイルのサイズも異なります...

diff key.pem key2.pem 

なぜですか?私はここで何か悪いことをしたのですか?

すべてのキーがここに添付されています。 https://www.dropbox.com/sh/ec1sm3y63sahwks/AAB6At3x_j5LRyf63gJDJn39a?dl=0

おかげで、 Difan

答えて

0

PEMファイルを見て、あなたがいずれかが表示されますが-----BEGIN PRIVATE KEY-----で始まり、他方は-----BEGIN RSA PRIVATE KEY-----で始まります。 PEMブロックのBEGINとEND行の単語は、ブロック内のデータの形式を指定します。これらは、約10のうちの2つを指定します(正確には数に応じて)。異なるデータ形式はOpenSSL for RSAキーでサポートされます。

最初のものは部5 PKCS8でPKCS8republished as RFC 5208暗号化されていないバリアントは、キーのパスワードベースの暗号化(PBE)の有無にかかわらず、RSA DSA DHとECDSAを含む多くの異なるアルゴリズムのための秘密鍵を扱うことができるです。 openssl genpkeyは、複数のアルゴリズムを処理するように設計されており、PKCS8形式を使用しています。

2つ目は、セクションA.1のPKCS1republished as RFC3447 et predのRSA専用秘密鍵の構文です。この形式は、RSAだけを処理し、PKCS8と区別するために 'tradtional'または 'legacy'形式と呼ばれるため、古いopenssl rsaおよびopenssl genrsa関数で記述されます。 PKCS1は暗号化されたフォーマットを定義していませんが、OpenSSLは一般的なPEM暗号化方式をサポートしています。しかし、OpenSSLの「レガシー」PEM暗号化はPKCS8で使用されているものほど良くないので、通常はセキュリティを必要とする場合はPKCS8を使用し、の場合は秘密鍵の代わりにPKCS12を使用する必要があります。

あなたがgenpkeyのような複数のアルゴリズムを処理し、PKCS8を使用していますPKCS8 DERとバックPEMにpkeyを使用して変換することができ

:(DERとは違って)PEMファイルはタイプによって認識することができますので

openssl pkey -in key.pem [-inform PEM] -out key.der -outform DER 
openssl pkey -in key.der -inform DER -out xxx.pem [-outform PEM] 
# now xxx.pem is the same as key.pem 

ラインをBEGIN、あなたが直接戻っPKCS8にPKCS1 PEMに変換することができます:opensslコマンドラインを含むがこれらに限定されないOpenSSLライブラリを使用して

openssl pkey -in key2.pem -out yyy.pem 
# now yyy.pem is the same as key.pem 

プログラムを、これらの形式のいずれかでプライベートキーPEMファイルを自動的に読み取ることができます。また、正しいパスワードが指定されている場合は、2つの暗号化形式のいずれかを自動的に読み取ることができます。

+0

ありがとうございます!非常に明確な答え。私はしかし、明らかに私は低い評判で新しいですので、私のupvoteはカウントされません...申し訳ありません..しかし、この答えはいくつかのupvotesを引き付ける必要があります! –

関連する問題