Come estrarre la chiave pubblica usando OpenSSL?


120

Il seguente comando genera un file che contiene sia la chiave pubblica che quella privata:

openssl genrsa -des3 -out privkey.pem 2048

Fonte: qui

Con OpenSSL, la chiave privata contiene anche le informazioni sulla chiave pubblica, quindi non è necessario generare separatamente una chiave pubblica

Come possiamo estrarre la chiave pubblica dal file privkey.pem?

Grazie.


Questo strumento online è fantastico 8gwifi.org/pempublic.jsp
anish

Risposte:


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

Che scrive la chiave pubblica per key.pub


23
È sempre meglio usare l'opzione interna per fare questo:, -outper esempio: openssl rsa -in privkey.pem -pubout -out key.pubinvece di reindirizzare lo stdout a un file.
Juan Antonio

138

Sebbene, la tecnica di cui sopra funziona per il caso generale, non ha funzionato sui file PEM di Amazon Web Services (AWS).

Ho trovato nei documenti AWS il seguente comando funziona: ssh-keygen -y

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

modifica Grazie @makenova per la linea completa:

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

38
Grazie. Questo è ciò di cui avevo bisogno. Per saltare le istruzioni, puoi usaressh-keygen -y -f key.pem > key.pub
makenova

5
Questa è la risposta correttassh-keygen -y -f key.pem
Justin

1
questo mi sta chiedendo una passphrase, ma non ho inserito alcuna passphrase
kavain

1
@makenova Questo rigenererà la chiave key.pem, il che potrebbe impedirti di accedere alle istanze che richiedono quella chiave!
Presentato

Se hai lo stesso problema di @kavain dove ti chiede la passphrase che non hai inserito e stai usando la tua chiave ssh -i, assicurati di collegarti alla tua chiave privata, non a quella pubblica
aexl

5

Per chi è interessato ai dettagli, è possibile vedere cosa c'è dentro il file della chiave pubblica (generato come spiegato sopra), facendo questo: -

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

o per il file della chiave privata, questo: -

openssl rsa -noout -text -in key.private

che emette come testo sulla console i componenti effettivi della chiave (modulo, esponenti, numeri primi, ...)


2

Se stai cercando come copiare una .pemcoppia di chiavi Amazon AWS in una regione diversa, procedi come segue:

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

Poi

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

2
L'output della chiave pubblica di opensslè inserito nelle intestazioni PEM, che dovrai rimuovere prima che AWS CLI accetti la chiave.
JP

2

Per AWS che importa una chiave pubblica esistente,

  1. Esporta dal .pem facendo questo ... (su linux)

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

Questo produrrà un file che se apri in un editor di testo con un aspetto simile a questo ...

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/8y3uYCQxSXZ58OYceG
A4uPdGHZXDYOQR11xcHTrH13jJEzdkYZG8irtyG+m3Jb6f9F8WkmTZxl+4YtkJdN
9WyrKhxq4Vbt42BthadX3Ty/pKkJ81Qn8KjxWoL+SMaCGFzRlfWsFju9Q5C7+aTj
eEKyFujH5bUTGX87nULRfg67tmtxBlT8WWWtFe2O/wedBTGGQxXMpwh4ObjLl3Qh
bfwxlBbh2N4471TyrErv04lbNecGaQqYxGrY8Ot3l2V2fXCzghAQg26Hc4dR2wyA
PPgWq78db+gU3QsePeo2Ki5sonkcyQQQlCkL35Asbv8khvk90gist4kijPnVBCuv
cwIDAQAB
-----END PUBLIC KEY-----
  1. Tuttavia AWS NON accetterà questo file.

    Devi rimuovere -----BEGIN PUBLIC KEY-----e -----END PUBLIC KEY-----dal file. Salvalo e importalo e dovrebbe funzionare in AWS.


4
e se è necessario convertire questo formato per ssh-rsa AAAAB3NzaC1y....eseguire:ssh-keygen -f PublicKey.pub -i -mPKCS8
Rafael Milewski
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.