web-dev-qa-db-fra.com

Comment extraire la clé publique en utilisant OpenSSL?

La commande suivante génère un fichier contenant les clés publique et privée:

openssl genrsa -des3 -out privkey.pem 2048

Source: ici

Avec OpenSSL, la clé privée contient également les informations sur la clé publique, de sorte qu'une clé publique ne doit pas être générée séparément

Comment pouvons-nous extraire la clé publique du fichier privkey.pem?

Merci.

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

Cela écrit la clé publique dans key.pub

174
stewe

Bien que la technique ci-dessus fonctionne dans le cas général, elle ne fonctionnait pas avec les fichiers PEM Amazon Web Services (AWS).

J'ai trouvé dans la documentation AWS la commande suivante fonctionne: ssh-keygen -y

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

edit Merci @makenova pour la ligne complète:

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

Pour ceux qui sont intéressés par les détails - vous pouvez voir le contenu du fichier de clé publique (généré comme expliqué ci-dessus), en procédant comme suit: -

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

ou pour le fichier de clé privée, ceci: -

openssl rsa -noout -text -in key.private

qui affiche sous forme de texte sur la console les composants réels de la clé (module, exposants, nombres premiers, ...)

5
cnd

Si vous cherchez à copier une paire de clés Amazon AWS .pem dans une autre région, procédez comme suit:

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

Ensuite

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

Pour AWS important une clé publique existante,

  1. Exporter depuis le .pem en faisant cela ... (sur linux)

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

Cela produira un fichier qui, si vous ouvrez dans un éditeur de texte, ressemble à ceci ...

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/8y3uYCQxSXZ58OYceG
A4uPdGHZXDYOQR11xcHTrH13jJEzdkYZG8irtyG+m3Jb6f9F8WkmTZxl+4YtkJdN
9WyrKhxq4Vbt42BthadX3Ty/pKkJ81Qn8KjxWoL+SMaCGFzRlfWsFju9Q5C7+aTj
eEKyFujH5bUTGX87nULRfg67tmtxBlT8WWWtFe2O/wedBTGGQxXMpwh4ObjLl3Qh
bfwxlBbh2N4471TyrErv04lbNecGaQqYxGrY8Ot3l2V2fXCzghAQg26Hc4dR2wyA
PPgWq78db+gU3QsePeo2Ki5sonkcyQQQlCkL35Asbv8khvk90Gist4kijPnVBCuv
cwIDAQAB
-----END PUBLIC KEY-----
  1. Cependant, AWS n'acceptera PAS ce fichier.

    Vous devez retirer le -----BEGIN PUBLIC KEY----- et -----END PUBLIC KEY----- du fichier. Enregistrez-le et importez-le. Il devrait fonctionner dans AWS.

1
Bendo