Jak wyodrębnić klucz publiczny za pomocą OpenSSL?

120

Następujące polecenie generuje plik zawierający zarówno klucz publiczny, jak i prywatny:

openssl genrsa -des3 -out privkey.pem 2048

Źródło: tutaj

W przypadku OpenSSL klucz prywatny zawiera również informacje o kluczu publicznym, więc klucz publiczny nie musi być generowany osobno

Jak możemy wyodrębnić klucz publiczny z pliku privkey.pem?

Dzięki.

Jake
źródło
To narzędzie online jest cool 8gwifi.org/pempublic.jsp
Anish

Odpowiedzi:

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

To zapisuje klucz publiczny do key.pub

gulasz
źródło
23
Zawsze lepiej jest użyć do tego opcji wewnętrznej: -outna przykład: openssl rsa -in privkey.pem -pubout -out key.pubzamiast przekierowywać standardowe wyjście do pliku.
Juan Antonio
138

Chociaż powyższa technika działa w ogólnym przypadku, nie działała na plikach PEM Amazon Web Services (AWS).

Znalazłem w dokumentach AWS następujące polecenie: ssh-keygen -y

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

edytuj Thanks @makenova za całą linię:

ssh-keygen -y -f key.pem > key.pub
lababidi
źródło
38
Dzięki. To jest potrzeba, której potrzebowałem. Aby pominąć monity, możesz użyćssh-keygen -y -f key.pem > key.pub
makenova
5
To jest poprawna odpowiedźssh-keygen -y -f key.pem
Justin
1
to jest prośba o hasło, ale nie wprowadziłem żadnego hasła
kavain
1
@makenova To będzie regenerować kluczyk key.pem, który mógłby uniemożliwić rejestrowanie w sytuacjach, które wymagają tego klucza!
Przesłane
Jeśli masz ten sam problem, co @kavain, gdzie prosi Cię o hasło, którego nie wprowadziłeś, i używasz klucza ssh -i, upewnij się, że łączysz się z kluczem prywatnym, a nie publicznym
aexl
5

Dla zainteresowanych szczegółami - możesz zobaczyć, co znajduje się w pliku klucza publicznego (wygenerowanym jak wyjaśniono powyżej), wykonując następujące czynności: -

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

lub dla pliku klucza prywatnego: -

openssl rsa -noout -text -in key.private

który wyświetla jako tekst na konsoli rzeczywiste składniki klucza (moduł, wykładniki, liczby pierwsze, ...)

cnd
źródło
2

Jeśli szukasz sposobu skopiowania .pempary kluczy Amazon AWS do innego regionu, wykonaj następujące czynności:

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

Następnie

aws ec2 import-key-pair --key-name amazon-aws --public-key-material '$(cat .ssh/amazon-aws.pub)' --region us-west-2
Justin
źródło
2
Wyjście klucza publicznego przez openssljest umieszczone w nagłówkach PEM, które należy usunąć, zanim interfejs wiersza poleceń AWS zaakceptuje klucz.
JP
2

W przypadku AWS importującego istniejący klucz publiczny,

  1. Eksportuj z .pem, robiąc to ... (w systemie Linux)

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

Spowoduje to utworzenie pliku, który po otwarciu w edytorze tekstu wyglądającym mniej więcej tak ...

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/8y3uYCQxSXZ58OYceG
A4uPdGHZXDYOQR11xcHTrH13jJEzdkYZG8irtyG+m3Jb6f9F8WkmTZxl+4YtkJdN
9WyrKhxq4Vbt42BthadX3Ty/pKkJ81Qn8KjxWoL+SMaCGFzRlfWsFju9Q5C7+aTj
eEKyFujH5bUTGX87nULRfg67tmtxBlT8WWWtFe2O/wedBTGGQxXMpwh4ObjLl3Qh
bfwxlBbh2N4471TyrErv04lbNecGaQqYxGrY8Ot3l2V2fXCzghAQg26Hc4dR2wyA
PPgWq78db+gU3QsePeo2Ki5sonkcyQQQlCkL35Asbv8khvk90gist4kijPnVBCuv
cwIDAQAB
-----END PUBLIC KEY-----
  1. Jednak AWS NIE zaakceptuje tego pliku.

    Musisz zdjąć -----BEGIN PUBLIC KEY-----iz -----END PUBLIC KEY-----pliku. Zapisz go i zaimportuj, a powinien działać w AWS.

Bendo
źródło
4
a jeśli potrzebujesz przekonwertować ten format do ssh-rsa AAAAB3NzaC1y....uruchomienia:ssh-keygen -f PublicKey.pub -i -mPKCS8
Rafael Milewski