Как извлечь открытый ключ с помощью 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

edit Спасибо @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, убедитесь, что вы
ссылаетесь

5

Для тех, кто интересуется деталями - вы можете увидеть, что находится внутри файла открытого ключа (сгенерированного, как описано выше), выполнив следующие действия: -

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

или для файла закрытого ключа это: -

openssl rsa -noout -text -in key.private

который выводит в виде текста на консоль фактические компоненты ключа (модуль, показатель степени, простые числа, ...)


2

Если вы хотите скопировать .pemпару ключей Amazon AWS в другой регион, сделайте следующее:

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 примет ключ.
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.