Openssl pour les nuls comme moi

Un article de Le wiki de 2 noisettes - noisette.ch.

Cet atricle explique la création et la maintenance des certificats SSL.

L'idée est de créer un certificat ROOT CA qui sera utilisé pour signer les autres certificats applicatifs, par exemple une certificat WEB SSL ou FTP SSL.

Cette structure s'appelle une autorité de certification, et openssl, utilisé ici pour créer/modifier les certificats, offre un outil pour créer une telle autorité : CA.pl

Cette autorité de certification aura donc une hierarchie de dossier et de fichiers, qu'il serait judicieux de placer dans un répertoire non accessible à tout le monde. Dans mon cas je le place dans /root/ssl.

Le fichier de configuration principal se nomme en général dans /etc/ssl/openssl.cnf. Il est bon d'y faire un tour et de modifier quelques options, notemment dans la section CA_default la variable dir de demoCA en CA, et quelques valeurs par défaut de la section req. Puis :

mkdir -p /root/ssl
cd /root/ssl
CA.pl -newca

La commande -newca créer donc les fichiers nécessaires, ainsi que le certificat ROOT CA. Un mot de passe vous sera demandé, c'est celui qui encrypte la clé privée ROOT CA. Il est important de ne pas perdre ce mot de passe, faute de quoi vous ne pourrez plus prolonger les certificats applicatifs, vous devrez les refaire.

Image:Authorite de certification11.png

Maintenant vous disposer d'un certificat racine, CA/cacert.pem, et d'une clé racine à la base de tout CA/private/cakey.pem.

Il nous suffit maintenant de générer un nouveau certificat applicatif, puis une demande de certification afin de pouvoir le signer avec le ROOT CA.

Image:Authorite de certification21.png

Donc :

/* Génération d'une clé applicatif pour apache a partir de laquelle le certificat sera fait */
openssl genrsa -out ssl.key 4096 
/* Génération de la demande de signature */
openssl req -new -days 730 -key ssl.key -out ssl.csr

A ce stade, le fichier ssl.csr contient toutes les informations nécessaires pour la création d'un certificat signé. C'est ce fichier qui devrait être envoyé à une entreprise de certification reconnue.

/* Signature de la demande de certificat */
openssl ca -config openssl.cnf -policy policy_anything -out ssl.pem -infiles ssl.csr 

Et voilà un tout beau certificat non plus auto-signé mais bien signé par ROOT CA. Grâce à ssl.key et ssl.cert vous pouvez maintenant configurer une connexion SSL.

Une petite référence :

Autosignement :

openssl req -new -x509 -days 730 -key ssl.key -out ssl.pem