2012-04-22 8 views
78

Der folgende Befehl erzeugt eine Datei, die sowohl öffentliche und private Schlüssel enthält:Wie extrahiert man öffentlichen Schlüssel mit OpenSSL?

openssl genrsa -des3 -out privkey.pem 2048 

Quelle: here

Mit OpenSSL, der private Schlüssel als auch den öffentlichen Schlüssel enthält Informationen, so dass eine öffentliche Doesn Schlüssel 't muss separat generiert werden

Wie können wir den öffentlichen Schlüssel aus der Datei privkey.pem extrahieren?

Danke.

Antwort

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

dass der öffentliche Schlüssel zu key.pub

+0

Vielen Dank !! – Jake

+0

Gern geschehen :) – stewe

+9

Verwenden Sie immer die interne Option, um dies zu tun: '-out', zum Beispiel: ' openssl rsa -in privkey.pem -pubout-out key.pub' statt redirect stdout zu a Datei. –

4

Für Interessenten an den Details schreibt - man kann sehen, was in der Public-Key-Datei ist (erzeugt wie oben erläutert), indem Sie diese: -

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

oder für die private Schlüsseldatei, dies: -

openssl rsa -noout -text -in key.private 

die Ausgänge als Text auf der Konsole die tatsächlichen Komponenten des Schlüssels (Modul, Exponenten, Primzahlen, ...)

68

Obwohl die obige Technik für den allgemeinen Fall funktioniert, hat es nicht auf Amazon Web Services (AWS) PEM-Dateien.

ich in den AWS docs folgende Befehl funktioniert gefunden: ssh-keygen -y

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

+30

Danke. Das ist der Wunsch, den ich brauchte. Um die Eingabeaufforderungen zu überspringen, können Sie 'ssh-keygen -y -f key.pem> key.pub' verwenden – makenova

+4

Dies ist die richtige Antwort' ssh-keygen -y -f key.pem' – Justin

+1

Vereinbarte 'ssh-keygen -y -f key.pem' ist korrekt. – dps

2

Wenn Ihr auf der Suche, wie ein Amazon AWS .pem Keypair in eine andere Region kopieren wie folgt vor:

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

Dann

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

Der öffentliche Schlüssel, der von 'openssl' ausgegeben wird, ist in PEM-Kopfzeilen eingebettet, die Sie entfernen müssen, bevor AWS CLI die Datei akzeptiert Schlüssel. –

0

Für AWS eine bestehende öffentliche Schlüssel importieren,

  1. Export aus der .pem dies zu tun ... (auf Linux)

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

Diese eine Datei erzeugt, das, wenn Sie öffnen in einem Texteditor, der ungefähr so ​​aussieht ...

-----BEGIN PUBLIC KEY----- 
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/8y3uYCQxSXZ58OYceG 
A4uPdGHZXDYOQR11xcHTrH13jJEzdkYZG8irtyG+m3Jb6f9F8WkmTZxl+4YtkJdN 
9WyrKhxq4Vbt42BthadX3Ty/pKkJ81Qn8KjxWoL+SMaCGFzRlfWsFju9Q5C7+aTj 
eEKyFujH5bUTGX87nULRfg67tmtxBlT8WWWtFe2O/wedBTGGQxXMpwh4ObjLl3Qh 
bfwxlBbh2N4471TyrErv04lbNecGaQqYxGrY8Ot3l2V2fXCzghAQg26Hc4dR2wyA 
PPgWq78db+gU3QsePeo2Ki5sonkcyQQQlCkL35Asbv8khvk90gist4kijPnVBCuv 
cwIDAQAB 
-----END PUBLIC KEY----- 
  1. AWS akzeptiert diese Datei jedoch NICHT.

    Sie müssen die -----BEGIN PUBLIC KEY----- und -----END PUBLIC KEY----- aus der Datei entfernen. Speichern Sie es und importieren Sie es und es sollte in AWS funktionieren.