如何将私钥转换为RSA私钥?

时间:2013-07-18 20:44:33

标签: ssl openssl ssl-certificate amazon-iam

让我先解释一下我的问题。我从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 doc页面上,他们显示的示例私钥以“-------开始RSA私钥--------”开头

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

3 个答案:

答案 0 :(得分:123)

较新版本的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 :(得分:20)

这可能会有一些帮助(不要在命令中写出反斜杠' \',它们意味着"一切都必须在一条线上" ):

Which Command to Apply When

似乎所有命令(灰色)都采用任何类型的密钥文件(绿色)作为"在"论点。哪个好。

以下是再次命令以便于复制粘贴:

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

答案 2 :(得分:1)

要将“ BEGIN OPENSSH私钥”转换为“ BEGIN RSA私钥”

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