Avoir son nom de domaine gratuitement grâce à letsencrypt
Letencrypt désigne une autorité de certification qui délivre des certificats gratuit X.509.
Un certificat TLS est généralement valide pour une durée de 1 an. Cependant, il arrive fréquemment qu'une fois généré, le processus de renouvellement est oublié et tout le monde oublie qu'il faut renouveller le nom de domaine. Let's encrypt a ainsi fait le choix de délivrer des certificats avec une période de validité très courte -90 jours- mais également de tellement faciliter le processus de renouvellement, qu'il est désormais totalement automatisable.
Certbot désigne une implémentation permettant d'automatiser les tâches courantes liées à un certificat (demande, renouvellement, révocation, etc.).
apt install certbot
2 enregistrements doivent être paramétrés :
L'enregistrement CAA permet de vérifier que le certificat présenté a bien été délivré par une autorité de certification (AC) de confiance. Normalement, on peut le spécifier par sous-domaine (ex1 : www.mydomain.tld, myserver.mydomain.tld), mais certaines AC n'acceptent pas de mélanger les CAA sur un même domaine. Donc pour plus de simplicité, on va le déclarer au niveau du domaine.
@ 10800 IN CAA 0 issue "letsencrypt.org"
De plus, chaque domaine présent dans un certificat doit pointer vers l'hôte qui demande le certificat.
@ 1800 IN A 217.70.xxx.xxx
@ 1800 IN AAAA 2001:4b98:dead:beef::1
www 3600 IN CNAME myserver
L'infrastructure est prête, demandons notre premier certificat qui sera valide pour les domaines www.mydomain.tld et myserver.mydomain.tld.
dry-run
permet de simuler l'exécution. En effet, si trop de demandes pour un même domaine sont émises, letsencrypt nous bannit pour un certain temps.standalone
indique que la vérifiation se fera sur un mini serveur web généré par certbot. Il pourrait utiliser la configuration apache ou nginx, mais c'est généralement source de problème. Pensez à arrêter votre serveur web au préalable, puis à le redémarrer.certbot certonly --dry-run --standalone -d www.mydomain.tld -d myserver.mydomain.tld --agree-tos -m postmaster@mydomain.com
Si le retour est positif - The dry run was successful.
alors on retire --dry-run
et on relance pour de vrai :
certbot certonly --standalone -d host1.mydomain.com --agree-tos -m postmaster@mydomain.com
Les fichiers sont installés dans le répertoire /etc/letsencrypt/live/[certname]
(extrait du README) :
Certbot va lister les certificats présents sur l'hôte et les renouvelle si le certificat périme dans moins de 30 jours.
certbot renew
certbot installe automatiquement une entrée dans le crontab qui automatise le renouvellement.
Vous pouvez joindre à ce renouvellement à un redémarrage des applications utilisant ces certificats pour les prendre en compte. Exemple : postfix reload
systemctl restart dovecot
etc.
2 étapes sont nécessaires quand on veut supprimer un certificat :
certbot revoke ---cert-name certificate_name
certbot delete --cert-name certificate_name
certbot certificates
Pour remplacer la liste des domaines d’un certificat (on ne peut pas ajouter ou supprimer juste un domaine, il faut tous les repréciser)
certbot certonly --cert-name nomducertificat -d domaine1.org,domaine2.org
L'option standalone permet un renouvellement au travers d'un serveur web embarqué. Pour éviter des conflits entre un serveur web existant et celui de certbot, il est possible de se greffer au serveur existant pour les opérations de certbot.
Installation du plugins :
apt install python3-certbot-nginx
Demander un certificat
certbot certonly --dry-run --nginx -d www.mydomain.tld -d myserver.mydomain.tld --agree-tos -m postmaster@mydomain.com
Un peu de documentation :