web-dev-qa-db-fra.com

Comment convertir une clé privée en clé privée RSA?

Laissez-moi d'abord expliquer ma question. J'ai acheté un certificat auprès d'une autorité de certification et utilisé le format suivant pour générer le csr et la clé privée:

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr

Lorsque j'ouvre le fichier server.key, je vois qu'il commence par "----- BEGIN PRIVATE KEY -----"

J'utilise le certificat SSL sur mon serveur et tout va bien.

Maintenant, je souhaite télécharger le même certificat sur AWS IAM afin de pouvoir l'utiliser pour l'équilibreur de charge beanstalk. J'utilise la commande suivante de ce document aws http://docs.aws.Amazon.com/IAM/latest/UserGuide/InstallCert.html#SubmitCSRCertAuth

iam-servercertupload -b public_key_certificate_file  -k privatekey.pem -s certificate_object_name

Je modifie les noms de fichier de certification selon les besoins, mais le message d'erreur suivant s'affiche: "400 clés privées non valides du certificat de certification."

Ce qui est intéressant, c’est que, sur la page de doc d’aws, l’exemple de clé privée qu’ils montrent commence par "------- Begin RSA Private Key --------".

Existe-t-il un moyen de convertir ma clé privée en clé privée RSA en utilisant openssl?

85
Silent User

Les versions plus récentes d'OpenSSL indiquent BEGIN PRIVATE KEY, car elles contiennent la clé privée + un OID qui identifie le type de clé (format PKCS8). Pour obtenir l'ancienne clé de style (connue sous le format PKCS1 ou OpenSSL traditionnel), procédez comme suit:

openssl rsa -in server.key -out server_new.key

Alternativement, si vous avez une clé PKCS1 et souhaitez utiliser PKCS8:

openssl pkcs8 -topk8 -nocrypt -in privkey.pem
132
Paul Kehrer

Cela peut être utile (n'écrivez pas littéralement les barres obliques inverses '\' dans les commandes, elles sont censées indiquer que "tout doit être sur une seule ligne"):

Which Command to Apply When

Il semble que toutes les commandes (en gris) prennent n'importe quel type de fichier de clé (en vert) en tant qu'argument "in". Qui est Nice.

Voici à nouveau les commandes pour faciliter le copier-coller:

openssl rsa                                                -in $FF -out $TF
openssl rsa -aes256                                        -in $FF -out $TF
openssl pkcs8 -topk8 -nocrypt                              -in $FF -out $TF
openssl pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -in $FF -out $TF

et

openssl rsa -check -in $FF
openssl rsa -text  -in $FF
23
David Tonhofer

Pour convertir "BEGIN OPENSSH PRIVATE KEY" en "BEGIN RSA PRIVATE KEY"

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
2
ahirapara