pemファイルの違い - ssh-keygenとopenssl

pemファイルの違い - ssh-keygenとopenssl

以下を使用して公開/秘密鍵ペアを作成しました。

ssh-keygen -t rsa -b 2048 -v

次に、.pemファイルが必要で、次の手順に従ってください。https://serverfault.com/questions/706336/how-to-get-a-pem-file-from-ssh-key-pair

ssh-keygen -f id_rsa -e -m pem   
-----BEGIN RSA PUBLIC KEY-----

それからこれを見つけました。https://gist.github.com/mingfang/4aba327add0807fa5e7f

openssl rsa -in ~/.ssh/id_rsa -outform pem
-----BEGIN RSA PRIVATE KEY-----

出力が異なる理由は何ですか?

答え1

OpenSSHは関数を呼び出してPEM_write_RSAPublicKey(stdout, k->rsa)公開鍵データをエクスポートしますが、OpenSSLは指定された秘密鍵で機能します。 OpenSSHを使用すると、ほとんどの状況は公開鍵を一部の外部サーバーで利用可能な形式に変換しますが、秘密鍵はクライアントシステムで非公開に保たれるため、OpenSSHの公開鍵で作業するのは合理的です。キーペア。 OpenSSLを使用すると、「公開鍵を他のSSHサーバーに適した形式に変換する」という問題がなく、コードを秘密鍵で直接操作できます。異なるコード、異なる意図、異なる結果。do_convert_to_pemssh-keygen.c

答え2

このコマンドの場合、秘密鍵の代わりに公開鍵を出力するにはopenssl rsaこのフラグが必要です。-puboutこれをRSA公開鍵として出力するには(このようにssh-keygen -e)、次の-RSAPublicKey_outフラグを代わりに使用します。

openssl rsa -in id_rsa -outform PEM -RSAPublicKey_out
-----BEGIN RSA PUBLIC KEY-----

これは同じ出力を提供します

ssh-keygen -e -f id_rsa -m pem
-----BEGIN RSA PUBLIC KEY-----

このコマンドは、キーを生成する元のコマンドに対応するフラグが含まれている場合opensslにのみ機能します。ssh-keygen-m PKCS8

関連情報