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


97

最初に私の質問を説明しましょう。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秘密鍵に変換する方法はありますか?

回答:


155

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

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

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

openssl pkcs8 -topk8 -nocrypt -in privkey.pem

1
これはInvalid PEM structure, '-----BEGIN...' missing.、同じキーを持つ純粋なSSHが機能しているときに、Cyber​​duck などのツールからのような奇妙なエラーメッセージを取得するためのソリューションでもあります。
ダニエル

1
ありがとうございました!私はA client error (MalformedCertificate) occurred when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.これを私の秘密鍵で取得して実行していたので修正されました!
philfreo 2014年

4
参考情報:詳細については、stackoverflow.com / q / 20065304/53974をご覧ください。
Blaisorblade、2015

1
これと逆のことをするにはどうすればよいですか?私は必要なPrivate KeyのはRSA Private Key
edthethird 2015

1
openssl pkcs8 -topk8 -nocrypt -in privkey.pemPKCS8をSTDOUTに書き込みます
Paul Kehrer、2015

24

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

いつ適用するコマンド

すべてのコマンド(灰色)は、任意のタイプのキーファイル(緑色)を「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

1
画像の「graphml」ファイル(たとえば、yworks yedで編集できます)はここにあります
David Tonhofer

8

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

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

これはまさに私が必要としたものです。ありがとう!
RossD

この動作はssh-keygenのマンページに間接的に記載されていますが、-mフラグの使用は、-iおよび-o以外の操作モードでは実際には言及されていません
ikrabbe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.