web-dev-qa-db-ja.com

秘密鍵をRSA秘密鍵に変換する方法は?

最初に私の質問を説明させてください。 CAから証明書を購入し、次の形式を使用してcsrと秘密キーを生成しました。

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr

Server.keyファイルを開くと、「----- BEGIN PRIVATE KEY -----」で始まることがわかります

サーバーでSSL証明書を使用していますが、すべて正常に見えます。

次に、同じ証明書をAWS IAMにアップロードして、beanstalkロードバランサーで使用できるようにします。このaws docから次のコマンドを使用します http://docs.aws.Amazon.com/IAM/latest/UserGuide/InstallCert.html#SubmitCSRCertAuth

iam-servercertupload -b public_key_certificate_file  -k privatekey.pem -s certificate_object_name

必要に応じて証明書ファイル名を変更しますが、「400 MalformedCertificate Invalid Private Key」というエラーが引き続き表示されます。

興味深いのは、awsドキュメントページで、表示されるサンプル秘密キーが「------- Begin RSA Private Key --------」で始まることです。

Opensslを使用して秘密鍵をRSA秘密鍵に変換する方法はありますか?

85
Silent User

OpenSSLの新しいバージョンは、秘密キー+キータイプを識別するOID(これはPKCS8形式と呼ばれます)を含むため、BEGIN PRIVATE KEYと言います。古いスタイルのキー(PKCS1または従来のOpenSSL形式として知られている)を取得するには、次のようにします。

openssl rsa -in server.key -out server_new.key

または、PKCS1キーがあり、PKCS8が必要な場合:

openssl pkcs8 -topk8 -nocrypt -in privkey.pem
132
Paul Kehrer

これはいくつかの助けになるかもしれません(文字通りバックスラッシュ「\」をコマンドに書き出さないでください、それらは「すべてが1行にある必要がある」ことを示すためのものです):

Which Command to Apply When

すべてのコマンド(灰色)は、任意のタイプのキーファイル(緑色)を「in」引数として使用するようです。いいね.

コピー&ペーストを簡単にするためのコマンドを次に示します。

openssl rsa                                                -in $FF -out $TF
openssl rsa -aes256                                        -in $FF -out $TF
openssl pkcs8 -topk8 -nocrypt                              -in $FF -out $TF
openssl pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -in $FF -out $TF

そして

openssl rsa -check -in $FF
openssl rsa -text  -in $FF
23
David Tonhofer

「BEGIN OPENSSH PRIVATE KEY」を「BEGIN RSA PRIVATE KEY」に変換するには

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
2
ahirapara