2.5. Gestion des certificats

2.5.1. Création et signature de demandes de certificats

CA.pl -newreq
(openssl req -config /etc/openssl.cnf -new -keyout newreq.pem \
 -out newreq.pem -days 365)

La commande précédente crée une nouvelle clef privée et une demande de certificat qu'elle place dans newreq.pem. Pour sécuriser un site web, par exemple www.sopac.org, on utilise le nom d'usage (CN) www.sopac.org. Pour le courrier électronique de franck@sopac.org, on utiliserait franck@sopac.org.

CA.pl -sign
(openssl ca -config /etc/openssl.cnf -policy policy_anything \
 -out newcert.pem -infiles newreq.pem)

Cette commande signe la demande avec cacert.pem et sauve le certificat dans newcert.pem. Le mot de passe de cacert.pem (le certificat de CA) est nécessaire. Un fichier newcerts/xx.pem est créé et les fichiers index.txt, serial sont mis à jour.

La clef privée se trouve donc dans la section -PRIVATE KEY- de newreq.pem et le certificat dans la section -CERTIFICATE- de newcert.pem.

Une copie de newcert.pem est émise dans le répertoire newcerts/ et l'enregistrement correspondant ajouté à index.txt de telle sorte qu'un client puisse accéder à l'information via un serveur web et vérifier l'authenticité du certificat.

On note que le fichier newreq.pem contient aussi bien la demande de certificat que la clef privée. La section -PRIVATE KEY- n'est pas nécessaire à la signature et il faut absolument la retirer avant de transmettre la demande à quelqu'un d'autre pour qu'il la signe. De même, pour signer une demande de certificat, il suffit d'obtenir la section -CERTIFICATE REQUEST-. Il n'y a aucune raison de demander la clef privée.

2.5.2. Révocation de certificat

La commande suivante révoque un certificat :

openssl -revoke newcert.pem

La base de données index.txt est modifiée en conséquence et le certificat est annoté comme révoqué. Il reste à régénérer la liste de révocation des certificats :

openssl ca -gencrl -config /etc/openssl.cnf -out crl/sopac-ca.crl

La liste de révocation (CRL/Certificate Revokation List) doit être rendue publique, par exemple sur un site web.

Les paramètres crldays, crlhours permettent de préciser la prochaine date de mise à jour de la CRL. crlexts spécifie la section du fichier openssl.cnf à employer pour créer une CRL de version 2 en place d'une CRL de version 1.

openssl ca -gencrl -config /etc/openssl.cnf -crldays 7 \
 -crlexts crl_ext -out crl/sopac-ca.crl

2.5.3. Renouvellement d'un certificat

L'utilisateur transmet son ancienne demande de certificat ou en régénère une nouvelle basée sur sa clef privée.

Il faut alors révoquer l'ancien certificat et signer la nouvelle demande de certificat.

L'ancien certificat se retrouve en cherchant dans le fichier index.txt le nom qualifié (DN) qui correspond à la requête. La procédure de révocation s'effectue ensuite avec le numéro de série <xx> et le fichier de certificat cert/<xx>.pem.

La signature de la nouvelle requête peut être manuelle pour s'assurer que les dates de validité du certificat seront correctes.

openssl ca -config /etc/openssl.cnf -policy policy_anything -out newcert.pem \
-infiles newreq.pem -startdate [now] -enddate [previous enddate+365days]

[now] et [previous enddate+365days] sont à remplacer par des valeurs adéquates.

2.5.4. Affichage d'un certificat

L'affichage sous forme textuelle du contenu d'un certificat sous forme codée s'effectue avec la commande suivante :

openssl x509 -in newcert.pem -noout -text

2.5.5. Le fichier index.txt

Le fichier index.txt contient les références des certificats créés par OpenSSL. Les enregistrements sont annotés avec un R pour indiquer que le certificat est révoqué, V qu'il est valide et E qu'il a expiré.

2.5.6. Élaborer son service web d'autorité de certification

Être une autorité de certification implique certaines tâches :

  1. publier le certificat de CA racine pour qu'il puisse être déployé dans les applications ;

  2. publier la liste de révocation ;

  3. afficher le contenu détaillé des certificats, notamment leur numéro de série ;

  4. fournir un formulaire de demande de certificats.

Un serveur web et quelques scripts permettent de réaliser toutes ces fonctions.

COMPLÉTEZ-MOI : code de l'interface web.

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:21