如何将私钥转换为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文档中使用以下命令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无效私钥”。

有趣的是,在aws doc页面上,它们显示的示例私钥以“ ------- Begin RSA Private Key --------”开头。

有没有办法使用openssl将我的私钥转换为RSA私钥?

Answers:


155

BEGIN PRIVATE KEY之所以说新版本的OpenSSL,是因为它们包含私钥+一个标识密钥类型的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之类的工具获取奇怪错误消息的解决方案。
丹尼尔(Daniel)

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

1
我们该如何做相反的事情?我需要Private Key从一个RSA Private Key
edthethird

1
openssl pkcs8 -topk8 -nocrypt -in privkey.pem将会向STDOUT写PKCS8
Paul

24

这可能会有所帮助(不要在命令中逐字写出反斜杠“ \”,它们是用来表示“所有内容都必须在一行上”):

何时应用哪个命令

似乎所有命令(灰色)都将任何类型的密钥文件(绿色)用作“ 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私钥”转换为“ BEGIN RSA私钥”

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

这正是我所需要的。谢谢!
RossD

ssh-keygen联机帮助页上间接记录了此行为,但对于-i和-o以外的其他操作模式,实际上未提及-m标志的用法
ikrabbe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.