web-dev-qa-db-de.com

Wie extrahiere ich einen öffentlichen Schlüssel mit OpenSSL?

Der folgende Befehl generiert eine Datei, die sowohl den öffentlichen als auch den privaten Schlüssel enthält:

openssl genrsa -des3 -out privkey.pem 2048

Quelle: hier

Bei OpenSSL enthält der private Schlüssel auch die Informationen zum öffentlichen Schlüssel, sodass ein öffentlicher Schlüssel nicht separat generiert werden muss

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

Vielen Dank.

108
Jake
openssl rsa -in privkey.pem -pubout > key.pub

Das schreibt den öffentlichen Schlüssel zu key.pub

174
stewe

Die oben beschriebene Technik funktioniert zwar für den allgemeinen Fall, jedoch nicht für PEM-Dateien von Amazon Web Services (AWS).

Ich habe festgestellt, dass in den AWS-Dokumenten der folgende Befehl funktioniert: ssh-keygen -y

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

edit Danke @makenova für die komplette Zeile:

ssh-keygen -y -f key.pem > key.pub
114
lababidi

Für diejenigen, die an den Details interessiert sind - Sie können sehen, was sich in der öffentlichen Schlüsseldatei befindet (wie oben beschrieben generiert), indem Sie dies tun:

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

oder für die private Schlüsseldatei:

openssl rsa -noout -text -in key.private

welche als Text auf der Konsole die eigentlichen Bestandteile des Schlüssels ausgibt (Modul, Exponenten, Primzahlen, ...)

5
cnd

Wenn Sie ein Amazon AWS kopieren möchten, .pem Schlüsselpaar in eine andere Region gehen Sie 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
Justin

Für AWS, das einen vorhandenen öffentlichen Schlüssel importiert,

  1. Exportieren Sie dazu aus der .pem-Datei ... (unter Linux)

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

Dadurch wird eine Datei erstellt, die beim Öffnen in einem Texteditor 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 Zeichen -----BEGIN PUBLIC KEY----- Und -----END PUBLIC KEY----- Aus der Datei entfernen. Speichern Sie es und importieren Sie es. Es sollte in AWS funktionieren.

1
Bendo