104

让我先解释一下我的问题。我从 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 Invalid Private Key”。

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

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

4

3 回答 3

177

较新版本的 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
于 2013-07-18T21:56:39.637 回答
32

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

何时应用哪个命令

似乎所有命令(灰色)都将任何类型的密钥文件(绿色)作为“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
于 2016-05-27T12:41:05.153 回答
21

转换BEGIN OPENSSH PRIVATE KEYBEGIN RSA PRIVATE KEY

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
于 2019-06-14T05:53:01.743 回答