Mise à jour du 03/05/2024.
Let's Encrypt est une organisation qui fournit librement des certificats. De tels certificats sous juridiction américaine ne doivent pas être employés pour protéger des données sensibles car l'administration US (NSA, FBI, etc.) peut facilement obtenir les clefs privées de chiffrement associées aux certificats générés et donc tout connaitre du trafic chiffré par de tels certificats. Toutefois pour l'usage courant comme un serveur Web public ou des des serveurs de messagerie, cette protection de la confidentialité est assez secondaire car elle n'interfère pas avec les "raisons d'Etat".
Désormais, la plupart des sites et des serveurs n'acceptent plus les certificats auto-signés qu'il est très facile de produire. Ils n'acceptent pas non plus l'absence de certificats. Let's Encrypt permet d'obtenir un certificat "régulier", reconnu et accepté par ces sites et serveurs. Nous traiton ici de serveurs nstallés sur des machines Linux sous Debian 12 et versions ultérieures.
Les certificats distribués ont les caractéristiques suivantes :
Il faut commencer par installer un client ACME (protocole d'échange de données pour obtenir un certificat). Sous Linux, le plus simple est d'obtenir certbot : apt install certbot python3-certbot-apache.
Ensuite pour doter votre ou vos sites de certificats, vous devez en premier l'avoir ou les avoir déclarés dans le fichier /etc/sites-enabled/000-default.conf et avoir mis en place leur pendant TLS dans le fichier /etc/sites-enabled/default-ssl.conf. Notez que ces noms de fichiers ne sont peut être pas les votres car il est tout à fait possible de choisir leur nom tant qu'un lien symbolique existe entre les fichiers situés sur /etc/sites-availableet le répertoire /etc/sites-enabled. Vous trouverez un exemple de ces fichiers dans l'article Installation et configuration du serveur Apache..
Pour vérifier votre configuration avant de lancer le serveur, exécutez la commande apachectl configtest.
Pour obtenir alors des certifiacts pour chacun de vos sites, tapez certbot --apache. Notez que le port 80 doit être accessible car certbot va se servir d'Apache. Il effetue différentes opérations dont :
Notez que la fermeture du port 80 n'est pas recommandée. De toute façon vous aurez besoin qu'il soit ouvert pour renouveler le certificat (cf. certbot renew).
De nombreux serveurs comme Postfix par exemple peuvent nécessiter un certificat de façon à chiffrer leur accès. Là encore les certificats Let's Encrypt suffisent généralement. Comment obtenir un certificat pour de tels serveurs notamment lorsque leur alias IP diffère de celui du site web mais qu'ils sont installés sur la même machine et via la même adresse IP que ces derniers ?
Imaginons que nous avons un site web via l'alias www.example.com. Sur la même machine nous disposons d'un serveur Postfix identifié par le DNS (champ MX) comme mail.example.com. Nous souhaiterions obtenir un certificat pour mail.example.com mais comme il ne correspond pas à un site Apache, nous ne pouvons pas utiliser la méthode précédent. Fort heureusement, certbot propose une alternative : certbot certonly --standalone -d mail.example.com.
Notez que le port 80 doit être disponible, ce qui suppose l'arrêt de votre serveur web s'il l'utilise. En effet, le paramètre --standalone indique certbot qu'il devra monter sont propre serveur web pour effectuer l'opération "challenge/réponse".
La commande certonly indique à certbot que seules la création et la distribution du certificat doivent être effectuées (pas de déploimeent dans les fichiers de configuration). Si cette commande aboutie, le certificat est enregistré sous /etc/letsencrypt/live/{domaine}.
Vous devrez alors configurer vous-même la configuration du serveur utilisant ce certificat (Postfix dans notre exemple).
Rédaction par Jean-Marie Piatte (1983-2021)