2012-04-22 16 views
78

Następujące polecenie generuje plik, który zawiera zarówno publicznego i prywatnego klucza:Jak wyodrębnić klucz publiczny przy użyciu OpenSSL?

openssl genrsa -des3 -out privkey.pem 2048 

Źródło: here

z OpenSSL, klucz prywatny zawiera informacje klucza publicznego, tak więc kluczem publicznym nie robi należy wygenerować oddzielnie

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

Dzięki.

Odpowiedz

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

To pisze klucz publiczny key.pub

+0

Wielkie dzięki! – Jake

+0

Nie ma za co. :) – stewe

+9

Zawsze lepiej użyj wewnętrznej opcji, aby to zrobić: '-out', na przykład: ' openssl rsa -in privkey.pem -pubout -out key.pub' zamiast przekierowania stdout do plik. –

4

Dla zainteresowanych szczegółami - można zobaczyć, co znajduje się wewnątrz pliku klucza publicznego (wygenerowane jak wyjaśniono powyżej), w ten sposób: -

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

lub pliku klucza prywatnego, w tym: -

openssl rsa -noout -text -in key.private 

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

68

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

znalazłem w docs AWS następujące polecenie działa: ssh-keygen -y

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

+30

Dzięki. Tego potrzebowałem. Aby pominąć monity, możesz użyć 'ssh-keygen -y -f key.pem> key.pub' – makenova

+4

To jest poprawna odpowiedź' ssh-keygen -y -f key.pem' – Justin

+1

Uzgodniony 'ssh-keygen -y -f key.pem' jest poprawny. – dps

2

Jeśli szukasz sposobu, aby skopiować Amazon AWS .pem parę kluczy do innego regionu należy wykonać 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 
+2

Wyjście klucza publicznego przez 'openssl' jest umieszczone w nagłówkach PEM, które musisz usunąć przed AWS CLI akceptuje klawisz. –

0

Dla AWS importujących istniejący klucz publiczny,

  1. Export z .pem ten sposób ... (na linux)

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

To będzie produkować plik, który jeśli otwierasz w edytorze tekstów 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 usunąć z pliku i -----END PUBLIC KEY-----. Zapisz go i importuj, a powinien działać w AWS.