Як витягнути відкритий ключ за допомогою OpenSSL?


120

Наступна команда створює файл, який містить і відкритий, і приватний ключ:

openssl genrsa -des3 -out privkey.pem 2048

Джерело: тут

У OpenSSL приватний ключ також містить інформацію відкритого ключа, тому відкритий ключ не потрібно генерувати окремо

Як ми можемо витягнути відкритий ключ з файлу privkey.pem?

Дякую.


Цей онлайновий інструмент крутий 8gwifi.org/pempublic.jsp
Аніш

Відповіді:


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

Це пише відкритий ключ до key.pub


23
Завжди краще використовувати внутрішню опцію для цього: -outнаприклад: openssl rsa -in privkey.pem -pubout -out key.pubзамість перенаправлення stdout у файл.
Хуан Антоніо

138

Хоча вищезазначена методика працює в загальному випадку, вона не працювала на файлах PEM Amazon Web Services (AWS).

Я знайшов у документах 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

5
Це правильна відповідьssh-keygen -y -f key.pem
Джастін

1
це просить у мене парольну фразу, але я не ставлю жодної фрази
kavain

1
@makenova Це відновить ключ key.pem, що може перешкодити вам увійти до примірників, які потребують цього ключа!
ОпублікованоДеред

Якщо у вас є та сама проблема, що і в @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
Рафаель Мілевський,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.