Comment extraire la clé publique en utilisant OpenSSL?

120

La commande suivante génère un fichier contenant à la fois la clé publique et la clé privée:

openssl genrsa -des3 -out privkey.pem 2048

Source: ici

Avec OpenSSL, la clé privée contient également les informations de clé publique, donc une clé publique n'a pas besoin d'être générée séparément

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

Merci.

Jake
la source
Cet outil en ligne est cool 8gwifi.org/pempublic.jsp
anish le

Réponses:

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

Qui écrit la clé publique dans key.pub

ragoût
la source
23
Il vaut toujours mieux utiliser l'option interne pour ce faire:, -outpar exemple: openssl rsa -in privkey.pem -pubout -out key.pubau lieu de rediriger stdout vers un fichier.
Juan Antonio
138

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

J'ai trouvé dans la documentation AWS que 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
lababidi
la source
38
Merci. C'est ce dont j'avais besoin. Pour ignorer les invites, vous pouvez utiliserssh-keygen -y -f key.pem > key.pub
makenova
5
C'est la bonne réponsessh-keygen -y -f key.pem
Justin
1
cela me demande une phrase de passe, mais je n'ai pas mis de phrase de passe
kavain
1
@makenova Cela régénérera la clé d' entrée key.pem, ce qui pourrait vous empêcher de vous connecter aux instances qui nécessitent cette clé!
SoumisDénié
Si vous rencontrez le même problème que @kavain où il vous demande la phrase de passe que vous n'avez pas placée et que vous utilisez votre clé avec ssh -i, assurez-vous que vous créez un lien vers votre clé privée, pas la clé publique
aexl
5

Pour ceux qui s'intéressent aux détails - vous pouvez voir ce qu'il y a dans le fichier de clé publique (généré comme expliqué ci-dessus), en faisant ceci: -

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 sort sous forme de texte sur la console les composants réels de la clé (module, exposants, nombres premiers, ...)

cnd
la source
2

Si vous cherchez comment copier une .pempaire de clés Amazon AWS 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
Justin
la source
2
La sortie de clé publique par opensslest prise en sandwich dans les en-têtes PEM, que vous devrez supprimer avant qu'AWS CLI accepte la clé.
JP
2

Pour AWS important une clé publique existante,

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

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

Cela produira un fichier qui, si vous ouvrez dans un éditeur de texte ressemblant à quelque chose comme ça ...

-----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 supprimer le -----BEGIN PUBLIC KEY-----et -----END PUBLIC KEY-----du fichier. Enregistrez-le et importez-le et cela devrait fonctionner dans AWS.

Bendo
la source
4
et si vous avez besoin de convertir ce format pour ssh-rsa AAAAB3NzaC1y....exécuter:ssh-keygen -f PublicKey.pub -i -mPKCS8
Rafael Milewski