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 |
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. |
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. |
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 ]