De nos jours, il est conseillé de générer des clés d'une longueur de 2048 bits pour une meilleure sécurité.
Pour un serveur Apache (configuration SSL), il est conseillé de générer des clés sans phrase de passe. Dans le cas contraire, à chaque démarrage du service Apache, la phrase de passe sera demandée.
Avec OpenSSL, la clé privée contient également les informations de la clé publique. Il n'est donc pas nécessaire de générer la clé publique séparément.
Génération d'une clé RSA
Générer une clé simple :
$ openssl genrsa
Générer une clé de 2048 bits et la sauvegarder dans un fichier :
$ openssl genrsa -out mykey.pem 2048
Idem mais avec un cryptage DES3 et une phrase de passe :
$ openssl genrsa -des3 -out mykey.pem 2048
Génération d'une clé publique RSA
$ openssl rsa -in mykey.pem -pubout
Génération d'une clé DSA
Les clés DSA sont utilisées pour la signature d'objets divers.
Le processus de génération se déroule en deux étapes.
Premièrement, générer les paramètres permettant la génération de la clé :
$ openssl dsaparam -out dsaparam.pem 2048
Puis, générer la clé en fonction des paramètres générés ci-dessus :
$ openssl gendsa -des3 -out privkey.pem dsaparam.pem
Une phrase de passe est demandée lors de la génération de la clé DSA.
Pour ne pas avoir de phrase de passe, il suffit de supprimer le paramètre "-des3".
Supprimer la phrase de passe d'une clé privée RSA
Cette commande permet de générer une nouvelle clé privée (newkey.pem) à partir de celle protégée par une phrase de passe (mykey.pem).
$ openssl rsa -in mykey.pem -out newkey.pem
Supprimer la phrase de passe d'un certificat
Pour l'exemple, nous allons créer un certificat crypté (mycert.pem).
Ce fichier (mycert.pem) contiendra la clé privée et le certificat public et sera protégé par une phrase de passe.
$ openssl req -x509 -days 365 -subj '/C=FR/ST=Loire Atlantique/L=Ancenis/CN=www.monsite.fr/emailAddress=toto@gmail.com' -newkey rsa:2048-keyout mycert.pem -out mycert.pem
Le décryptage du certificat se déroule en deux étapes :
Génération de la clé privée à partir du certificat crypté (mycert.pem) vers le nouveau certificat (newcert.pem) :
$ openssl rsa -in mycert.pem -out newcert.pem
Ajout du certificat public dans le nouveau certificat (newcert.pem) :
$ openssl x509 -in mycert.pem >>newcert.pem