Let’s Encrypt, est une nouvelle autorité de certification créé par l’Internet Security Research Group (ISRG). Cette entité permet de créer gratuitement et facilement des certificats de sécurité valide pour pouvoir utiliser HTTPS sur un site web.

Contrairement au début du projet, l’installation et la gestion des certificats est devenu très simple. Voici un pas à pas pour la mise en place sur un serveur utilisant Ubuntu.

Installer Certbot

Certbot est un outil en ligne de commande permettant de gérer la création et le renouvellement des certificats.
Sur une distribution Ubuntu 16.04, il est disponible dans le dépôt aptitude, il suffit de lancer :

$ sudo apt-get install letsencrypt

Sur une distribution plus ancienne, il faut télécharger l’installeur en ligne :

$ curl https://dl.eff.org/certbot-auto -o letsencrypt && chmod a+x letsencrypt

Je renomme ici le fichier certbot-auto pour avoir le même nom d’exécutable dans les deux cas. Ce n’est pas du tout obligatoire.

Cet outil est capable à travers différents plugins d’automatiser entièrement la mise en place des certificats. Certains sont encore en phase de stabilisation, je conseille de créer le certificat et de gérer la configuration du serveur web à la main.

Générer le certificat

Un certificat est généré pour un domaine particulier et un ou plusieurs sous domaine. Par exemple, sur ce site j’ai créé le certificat pour chstudio.fr et www.chstudio.fr. J’utilise le www uniquement pour la redirection vers le domaine principal mais si le certificat n’est pas configuré sur ce sous domaine, les utilisateurs ne pourront pas arriver sur https://www.chstudio.fr.

Il y a plusieurs mode de génération plus ou moins complexe. La différence va surtout se jouer sur la procédure de renouvellement périodique du certificat.

Lors de la génération, le script va surement poser quelques questions sur le partage de l’IP ou l’adresse email du propriétaire. Il faut bien respecter toutes les étapes.

Une fois terminé, les fichiers sont générés dans le répertoire /etc/letsencrypt/live/[domain], par exemple : /etc/letsencrypt/live/chstudio.fr.

Le mode standalone

C’est le mode le plus « brut ». Il permet de générer un certificat en utilisant un serveur web spécifique. Il ne s’appuie pas du tout sur l’architecture existante.
Attention, si vous utilisez ce mode, il faut bien arrêter votre serveur web (Apache, Nginx…) avant de lancer la génération.

$ letsencrypt certonly --standalone -d chstudio.fr -d www.chstudio.fr

Avec ce mode, il faudra forcément couper le serveur web pour pouvoir renouveller les certificats.

Le mode webroot

Un peu plus souple, il permet d’utiliser un serveur web existant pour vérifier la validité du domaine. Le script va créer des fichiers dans un répertoire .well-known, il faut simplement s’assurer que les fichiers contenus dans ce répertoire sont accessible.
Souvent les serveur web bloque l’accès aux fichiers cachés (commençant par un « . »), dans ce cas il faut juste autoriser le répertoire .well-known.

$ letsencrypt certonly --webroot -w /var/www/chstudio.fr -d chstudio.fr -d www.chstudio.fr

Avec cette commande, le script va créer le dossier  .well-known dans /var/www/chstudio.fr et y placer les fichiers nécessaire à la validation. Ils seront ensuite détruit.

Renouvellement du certificat

Les certificats générés par « Let’s Encrypt » ont une validité de 90jours. Au bout de ce délai, le certificat n’est plus valide et le site est considéré comme non sécurisé. Il faut bien penser à les renouveller régulièrement.

$ letsencrypt renew --dry-run

Cette première commande permet de tester le renouvellement. Si tout se passe bien, il faut lancer l’action réelle :

$ letsencrypt renew

Si l’opération se termine avec succès, les certificats sont mis à jour et tout est opérationnel. Attention tout de même, en fonction du mode utilisé lors de la création, il peut être nécessaire de couper le serveur web avant l’opération.

Il ne reste plus qu’à configurer votre serveur web pour l’utiliser !

NamesIssuedElsewhere