Sélectionner une page

Afin de sécuriser vos serveurs et services, en rendant difficile sinon impossible l’écoute des connexions, on préconise l’utilisation de SSL/TLS sur les protocoles sachant le faire. Pour cela, il faut disposer d’un certificat serveur, signature numérique certifiant que vous êtes propriétaire du domaine concerné.

Il existe de nombreuses CA (Autorités de Certifications) toutes payante, pour obtenir des certificats serveurs reconnus. L’une d’entre elle, CaCert, n’est pas payante, mais pas encore reconnue par tous. Nous allons nous intéresser de près à ce projet.

Si vous souhaitez générer un certificat signé par CACert pour vos noms de domaine, vous aurez besoin d’un compte sur CACert. Ensuite il vous faudra assez de points de confiance pour pouvoir générer des certificats de 2 ans. Ensuite, vous ajouterez votre nom de domaine à votre compte. Enfin vous pourrez envoyer la requête de certificat (CSR) pour obtenir un certificat pour un domaine ou un sous-domaine vous appartenant.

Créer un compte CACert

CACert est une association dont le but est de créer une autorité de certification racine, dont les certificats racine ne sont malheureusement pas installés actuellement dans les navigateurs principaux (Firefox, IE, safari), car elle n’a pas, à ce jour, la confiance juridique d’une véritable CA. Cependant, cela reste un outil puissant et gratuit pour obtenir facilement des certificats reconnus par une CA ayant pignon sur rue pour vos services web.

Depuis mars 2007, Debian a ajouté les certificats racines de CACert dans le paquet ca-certificates. Il vous suffit donc d’installer ce paquet pour que les certificats émis par CACert soient reconnus par vos services Internet tel que le smtpd de Postfix.

Le site web de CaCert
Le site web de CACert

La première étape consiste à se créer un compte sur le site de CACert. Rendez-vous sur le site (http://www.cacert.org), créez votre compte et confirmez sa création en cliquant sur le lien dans l’email de confirmation.

Obtenir des points pour pouvoir créer des certificats valides

Une fois que vous aurez créé un compte CACert, vous devrez prouver votre identité. Pour cela, il vous suffit de trouver un notaire CACert dans votre région. Un notaire est une personne ayant un compte CACert avec suffisamment de points, ce qui a pour conséquence qu’elle est suffisamment reconnue pour pouvoir certifier l’identité d’autres personnes. Vous pouvez vous rendre à la page suivante pour trouver un notaire près de chez vous. Si vous résidez près de Paris ou Amiens en France, contactez moi, je peux vous attribuer 35 points et vous faire rencontrer d’autres notaires.

La page de CACert pour trouver un notaire dans votre région

L'obtention de points de confiance est importante si vous voulez générer des certificats pour 2 ans.
L’obtention de points de confiance est importante si vous voulez générer des certificats pour 2 ans.

Une fois que vous aurez assez de points pour générer des certificats, vous pouvez vous connecter à votre serveur en SSH pour les étapes suivantes …

Expliquer comment installer les certificats racines

Comme je vous l’expliquais plus haut, les certificats CACert ne sont pas encore installés par défaut dans les navigateurs principaux. Par conséquent, si vous avez l’intention d’utiliser des certificats CACert sur des sites web, vous devriez mettre en place une page similaire à celle de CACert pour faire installer les certificats racine de CACert sur leur navigateur : https://www.cacert.org/index.php?id=3

Configurer Debian pour accepter les certificats de CACert

Si vous utilisez la version Sarge de Debian ou une version antérieure à Etch en général (sic.), vous devriez installer le paquet ca-certificates issu de Etch. Vous pouvez faire cela sans crainte : ce paquet ne contient que les certificats des CA et ne dépend de personne. La plus simple (et la plus sûre) méthode d’installation est, dans ce cas : (assurez vous d’avoir wget installé sur votre serveur avant…) :

 example:~# cd /tmp
example:/tmp# wget http://ftp.fr.debian.org/debian/pool/main/c/ca-certificates/ca-certificates_20070303_all.deb
example:/tmp# dpkg -i ca-certificates_20070303_all.deb

Si vous utilisez une autre version de Linux ou un BSD, vous pouvez utiliser la commande suivante (qui requiert OpenSSL et wget) :

 exemple:~# mkdir /etc/ssl /etc/ssl/certs
exemple:~# cd /etc/ssl/certs
exemple:/etc/ssl/certs# wget --no-check-certificate https://www.cacert.org/certs/root.crt https://www.cacert.org/certs/class3.crt
exemple:/etc/ssl/certs# c_rehash .

Cela télécharge les certificats racine CACert et crée les liens symboliques OpenSSL appropriés (c_rehash) nécessaire à la plupart des programmes utilisant la librairie OpenSSL.

Créer un certificat CACert via la ligne de commande d’OpenSSL.

La dernière étape consiste à créer un certificat CACert pour votre nom de domaine. Dans notre exemple, le MX concerné ou le HTTPS sera oberon.example.com

La première étape consiste à montrer à CACert que vous êtes un propriétaire légal du nom de domaine example.com. Pour cela, connectez-vous à votre compte CACert, et cliquez sur le lien Domaine > ajouter. Ensuite, entrez example.com dans le champ texte. Ensuite, choisissez l’un des emails du domaine proposé par CACert. Si aucun d’entre eux n’existe, créez l’email root@example.com ou postmaster@example.com, afin de pouvoir recevoir l’email de confirmation.

Ajout d'un nom de domaine à votre compte CACert.
Ajout d’un nom de domaine à votre compte CACert.

Après avoir cliqué sur le lien de confirmation, et confirmé l’ajout de ce domaine à votre compte en cliquant sur le « Oui », vous pouvez générer un certificat SSL signé par CACert pour tout sous-domaine de example.com.

Maintenant, connectez vous sur oberon.example.com en utilisant SSH et vérifiez que openssl est installé (pour cela, tapez « openssl » : un invite de commande OpenSSL> doit apparaître. Cliquez sur Ctrl+D pour quitter.)

Le fichier de configuration par défaut d’openssl pose pleins de questions qui vous seront inutiles. Vous pouvez donc remplacer le fichier de configuration par défaut dans /etc/ssl/openssl.cnf par le fichier .cnf suivant :

openssl.cnf utilisé pour générer une requête de certificat minimale :

HOME                    = .
RANDFILE                = $ENV::HOME/.rnd
oid_section             = new_oids
[ new_oids ]
[ req ]
default_bits            = 2048
default_keyfile         = privkey.pem
distinguished_name      = req_distinguished_name
attributes              = req_attributes
string_mask = nombstr 

[ req_distinguished_name ]
commonName                      = Votre nom de domaine
commonName_max                  = 256
emailAddress                    = Votre Adresse Email
emailAddress_max                = 256
[ req_attributes ]

Vous pouvez alors générer une CSR (Requête de Certificat) avec la commande suivante :
openssl req -new

Tapez ensuite un mot de passe temporaire (2 fois), entrez votre nom de domaine (ici oberon.example.com), et votre adresse email. OpenSSL va créer un fichier temporaire privkey.pem (ne le perdez pas : il contient votre clé privée) et sortir sur stdout la requête de certificat CSR.

Rendez-vous ensuite sur votre compte CACert, et cliquez sur Certificat Serveur > Nouveau. Ensuite, copiez-collez votre CSR dans la zone de texte.

Envoi d'une CSR à CACert
Envoi d’une CSR à CACert

CACert vous demande alors de confirmer la demande de certificat pour le domaine (ou le sous-domaine) :

Formulaire de confirmation de la création de certificat.
Formulaire de confirmation de la création de certificat.

Enfin, CACert vous envoie (sur la page web et par mail) votre certificat X.509 :

Un certificat X.509 au format PEM
Un certificat X.509 au format PEM

La dernière étape consiste à créer un fichier .PEM avec votre clé privée non protégée et votre certificat, de telle sorte que votre serveur web et mail puisse le lire :

   openssl rsa -in privkey.pem -out oberon.example.com.pem
(entrez le mot de passe temporaire utilisé plus haut.)
cat >>oberon.example.com.pem
(Collez ici votre certificat CACert)
Ctrl+D
rm -f privkey.pem

Vous disposez alors d’une fichier nommé oberon.example.com qui contient votre clé pribée ET votre certificat signé par CACert.

Réferrez-vous à la documentation sur SSL/TLS pour savoir comment utiliser ce certificat sur vos serveurs.