让我先解释一下我的问题。我从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私钥?
答案 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)
这可能会有一些帮助(不要在命令中写出反斜杠' \',它们意味着"一切都必须在一条线上" ):
似乎所有命令(灰色)都采用任何类型的密钥文件(绿色)作为"在"论点。哪个好。
以下是再次命令以便于复制粘贴:
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