Signez vos certificats avec la CaCert

À l'occasion du renouvellement de la signature du certificat qu'utilise mon blog, je vous propose de parler des certificats SSL.

Avant de nous lancer...

Tout d'abord, je vais commencer par la question que vous devez être en train de vous poser: qu'est-ce qu'un certificat SSL? Et bien, pour faire simple, c'est un fichier, généré par le propriétaire d'un serveur et signé par une autorité de certification (également appelée CA pour certification authority), qui va permettre au navigateur de savoir si il a affaire au vrai serveur ou si il fait face à un quelqu'un qui essaye de se faire passer pour le serveur demandé. C'est en quelque sorte une carte d'identité que montre le serveur au navigateur pour que ce dernier puisse savoir si il doit ou non lui faire confiance et autoriser un dialogue chiffré (vous savez, le fameux https).

Maintenant que avons vu (et que, je l'espère, vous avez compris) ce qu'était un certificat SSL, nous allons nous intéresser aux différents moyens de signer ou faire signer ses certificats. Pour cela, nous disposons de trois solutions:

  1. Signer soi-même son certificat: le gros avantage de cette solution, c'est que produire un certificat auto-signé est très facile à faire. Le gros désavantage, c'est que tous les navigateurs demanderont à leurs utilisateurs si ils souhaitent faire ce qu'ils appellent une « exception de sécurité » et faire confiance à votre serveur. C'est, à mes yeux, une très mauvaise solution...
  2. Faire signer son certificat par une autorité de certification payante: le gros avantage de cette solution, c'est que le certificat de votre serveur sera reconnu par tous les navigateurs. Le gros désavantage, c'est que ces autorités de certification vous demandent, pour un seul domaine (donc soit example.com, soit www.example.com), une centaine d'euros par an (dans leur formule la moins chère). C'est une très bonne solution pour un gros site ou un site de e-commerce, mais ce n'est pas génial pour un petit site/blog aux ressources limitées...
  3. Faire signer son certificat par une autorité de certification gratuite: le gros avantage de cette solution, c'est que c'est gratuit. Le gros désavantage, c'est que tous les navigateurs/systèmes d'exploitation ne reconnaissent (malheureusement) pas encore ces autorités. Ici, c'est avant tout l'utilisateur qui est avantagé: il n'aura qu'à importer un seul certificat racine (celui de l'autorité de certification) pour ne plus recevoir d'avertissement de la part de plusieurs centaines de milliers de sites!

Vous l'aurez sans doute deviné, nous allons ici nous intéresser à la troisième solution. Nous allons nous pencher sur une autorité de certification bien particulière: la CaCert. Cette autorité permet, après inscription et vérification des noms de domaine (par l'envoi d'un e-mail à un contact présent dans le WhoIs), de faire signer ses certificats pour une durée de six mois. Si vous trouvez ce délai un peu court, sachez qu'il existe un système de points qui vous permettra d'acquérir plus de privilèges pour la signature de vos certificats.

Génération d'un certificat

Commencez par vous connecter (via SSH par exemple) au shell de votre serveur. Une fois connecté, créez un dossier où vous stockerez tout ce qui concerne votre futur certificat:Ensuite, nous allons télécharger puis lancer un script bash qui nous permettra de générer un certificat qui pourra, par la suite, être signé sur le site de la CaCert:Voici un exemple qui vous aidera à remplir les informations demandées. Ici, je génère un certificat pour les domaines mon-domaine.fr et tous ses sous-domaines (pour cela, on utilise une wild card, que l'on note « * »), mon-autre-domaine.fr (mais pas www.mon-autre-domaine.fr) et sous-domaine.troisieme-domaine.fr (mais ni troisieme-domaine.fr, ni www.troisieme-domaine.fr):

Signature

Une fois cette opération effectuée, un drôle de message devrait apparaître:C'est votre demande de certificat. Copiez la dans le presse papier (y compris le retour à la ligne de fin) puis rendez-vous sur cette page. Collez votre demande de certificat dans le champ dédié puis cliquez sur envoyer. Si tout se passe bien (si vous avez au préalable pensé à ajouter vos noms de domaines sur cette page), le site vous renvoie votre certificat signé! Il ne vous reste plus qu'à le copier puis à l'ajouter dans un fichier que vous nommerez - par exemple - mon-domaine.fr.pem. Pensez bien à ajouter l'extension .pem à votre fichier! Une fois ceci fait, il ne vous reste plus qu'à reconfigurer votre serveur pour qu'il utilise ce certificat!

2 commentaires

Par Schumi59, le 7 août 2013

Bonjour,

ton tutoriel est vraiment bien fait et facile a comprendre cependant, j'ai un petit soucis avec CaCert. Lorsque je veux ajouter mes noms de domaines, il me demande une "adresse électronique faisant autorité sur ce nom de domaine". J'ai essayé avec toutes les possibilités mais rien n'y fait... Que dois-je faire ?
(je précise que ce sont des noms de domaines en local d'abord pour tester le ssl et ensuite je passerai sur les serveurs de production)

Merci d'avance

Par quent1 (admin), le 16 août 2013

@Schumi59: Bonjour,
en fait, avec la CaCert, la sécurité contre les certificats frauduleux est telle qu'il n'est pas possible d'utiliser un nom de domaine local. Il faut impérativement que vous ayez acheté le nom de domaine en question auprès d'un registraire agréé et que vous ayez configuré une adresse e-mail "contact@votre-domaine.tld" pour pouvoir y générer un certificat SSL auprès de la CaCert :-).