如何使用OpenSSL提取公钥?


120

以下命令生成一个包含公钥和私钥的文件:

openssl genrsa -des3 -out privkey.pem 2048

资料来源:这里

使用OpenSSL,私钥也包含公钥信息,因此不需要单独生成公钥。

我们如何从privkey.pem文件中提取公钥?

谢谢。


这个在线工具是很酷8gwifi.org/pempublic.jsp
阿尼什

Answers:


188
openssl rsa -in privkey.pem -pubout > key.pub

那把公钥写到 key.pub


23
总是最好使用内部选项来执行此操作: -out例如,openssl rsa -in privkey.pem -pubout -out key.pub而不是将标准输出重定向到文件。
Juan Antonio

138

虽然上述技术适用于一般情况,但不适用于Amazon Web Services(AWS)PEM文件。

我确实在AWS文档中发现以下命令有效: ssh-keygen -y

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

编辑 感谢@makenova的完整内容:

ssh-keygen -y -f key.pem > key.pub

38
谢谢。这是我需要的。要跳过提示,您可以使用ssh-keygen -y -f key.pem > key.pub
makenova 2015年

5
这是正确的答案ssh-keygen -y -f key.pem
贾斯汀

1
这是在问我一个密码短语,但是我没有输入任何密码短语
kavain

1
@makenova这将重新生成中的密钥key.pem,这可能会阻止您登录需要该密钥的实例!
SubmittedDenied

如果您遇到与@kavain相同的问题,询问您没有输入的密码,并且您正在使用密钥ssh -i,请确保您链接到的是私钥,而不是公钥
aexl

5

对于那些对细节感兴趣的人,您可以通过执行以下操作来查看公钥文件(如上所述生成)中的内容:

openssl rsa -noout -text -inform PEM -in key.pub -pubin

或对于私钥文件,这是:

openssl rsa -noout -text -in key.private

它在控制台上以文本形式输出键的实际组成部分(模数,指数,质数等)


2

如果您希望将Amazon AWS .pem密钥对复制到其他区域,请执行以下操作:

openssl rsa -in .ssh/amazon-aws.pem -pubout > .ssh/amazon-aws.pub

然后

aws ec2 import-key-pair --key-name amazon-aws --public-key-material '$(cat .ssh/amazon-aws.pub)' --region us-west-2

2
输出的公共密钥openssl夹在PEM标头中,在AWS CLI接受密钥之前,必须将其删除。
JP

2

对于AWS导入现有的公钥,

  1. 从.pem导出执行此操作...(在Linux上)

    openssl rsa -in ./AWSGeneratedKey.pem -pubout -out PublicKey.pub
    

这将产生一个文件,如果您在文本编辑器中打开该文件,则如下所示:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/8y3uYCQxSXZ58OYceG
A4uPdGHZXDYOQR11xcHTrH13jJEzdkYZG8irtyG+m3Jb6f9F8WkmTZxl+4YtkJdN
9WyrKhxq4Vbt42BthadX3Ty/pKkJ81Qn8KjxWoL+SMaCGFzRlfWsFju9Q5C7+aTj
eEKyFujH5bUTGX87nULRfg67tmtxBlT8WWWtFe2O/wedBTGGQxXMpwh4ObjLl3Qh
bfwxlBbh2N4471TyrErv04lbNecGaQqYxGrY8Ot3l2V2fXCzghAQg26Hc4dR2wyA
PPgWq78db+gU3QsePeo2Ki5sonkcyQQQlCkL35Asbv8khvk90gist4kijPnVBCuv
cwIDAQAB
-----END PUBLIC KEY-----
  1. 但是,AWS将不接受此文件。

    您必须从文件中删除-----BEGIN PUBLIC KEY----------END PUBLIC KEY-----。保存并导入,它应可在AWS中工作。


4
并且如果您需要将这种格式转换为ssh-rsa AAAAB3NzaC1y....运行:ssh-keygen -f PublicKey.pub -i -mPKCS8
Rafael Milewski
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.