我先解释一下我的问题。我从 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 私钥?
较新版本的 OpenSSL 说
BEGIN PRIVATE KEY
,因为它们包含私钥 + 标识密钥类型的 OID(这称为 PKCS8 格式)。要获取旧式密钥(称为 PKCS1 或传统 OpenSSL 格式),您可以执行以下操作:
openssl rsa -in server.key -out server_new.key
如果您使用的是 OpenSSL 3,则需要添加
-traditional
:
openssl rsa -in server.key -out server_new.key -traditional
或者,如果您有 PKCS1 密钥并想要 PKCS8:
openssl pkcs8 -topk8 -nocrypt -in privkey.pem
这可能会有所帮助(不要在命令中逐字写出反斜杠“\”,它们的意思是“所有内容都必须在一行上”):
似乎所有命令(灰色)都将任何类型的密钥文件(绿色)作为“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
要将
BEGIN OPENSSH PRIVATE KEY
转换为 BEGIN RSA PRIVATE KEY
:
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
-----开始 RSA 私钥-----
MIICWgIBAAKBgFoy UL5VpIH+HS3LfMCmP37rlRPhBoFTqmJNTRL4NrBCJS2RIBAS 3dKkzvfCA7OzBUeqvn+kpdk1d3lYC2q8xAID Trskbu149YwiNRZU8ekJmuGexID4 tVRckkjzQjxkvJqRloyLnma h ZNP14k+1AgbJOokQxXYr8NF34lp7/F 7/F4y1HAgMBAAEC 9YBLpof1X0q1Squ47NUAVrItyHbsDLTDJ6Vj/QjoH3Dn2SOMMdycFLYfalPoxywJ v+Bu46YUNMuz7KgBDTvOVPVm5s8etnw+XUIuoKizDj7SjEvHPA vZziotz6i9Cw30 q4GGXs+YWLaQWqjd4er00MJp42CrAvJP7vfSPg2rnfoB8QJBAKbLNAU/lazHi42k DoRiSNNHuQaSs77kmjrVWpn38M9xubpzOFpI2LzrJKMv21iL+b1lv24x4moizcZo 91 6WnV8CQQCKb7QYuypa6H5fD4Z7C4uA9TMqrhtl75M97v/2aljQ7w1XVPdiSfwT 9ztAAZrxGKU6QI3Uz3FPW/A3KPL21ZEZAkBbF4Akz6Uex5wfrwl+027CdNlIDbas +nyAxSTGEfMiWCnm+iY8qKw 2APXxaaGRqmCqT6C8veG5tWhMg6e7cOZhAkAzvtfs 0897JegbtasL69PeHLncTf/9vtFus547lrlMTszq1WoDT5jFWĺbw1/ GrGID22WJ9 Xw/DP2tulN41aQq5AkAoMXItzrNCwqVzmQbGolG9FY9dGfgKPDeWBZDdsVZ1FO/p xt4a/Hej68hkJK40Acr4sqJDkHqfdlFKc8UdPM/F
-----结束 RSA 私钥-----