Let's encrypt

Let's encrypt

web TLS

Avoir son nom de domaine gratuitement grâce à letsencrypt

Letencrypt désigne une autorité de certification qui délivre des certificats gratuit X.509.

 Processus

letsencrypt_process

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.

Demander mon premier certificat

Certbot désigne une implémentation permettant d'automatiser les tâches courantes liées à un certificat (demande, renouvellement, révocation, etc.). certbot-logo

 Installation de certbot

apt install certbot

Paramétrer le nom de domaine

2 enregistrements doivent être paramétrés :

  • un enregistrement CAA définissant l'autorité de certification autorisée à délivrer le certificat pour ce domaine.
  • un enregistrement A, AAAA, CNAME permettant de vérifier que l'hôte demandant le certificat, est légitime.

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

 Demander le certificat

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) :

  • privkey.pem : la clé privée du certificat
  • fullchain.pem : le certificat à utiliser par la majorité des serveurs
  • chain.pem : utilisé pour l'OCSP stapling dans Nginx >=1.3.7
  • cert.pem : va casser la majorité des configurations serveurs et ne devrait pas être utilisé sans lecture de la documentation

Renouvellement

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.

Révocation

2 étapes sont nécessaires quand on veut supprimer un certificat :

  • le révoquer, c'est-à-dire l'inscrire sur la liste des certificats inutilisables ; certbot revoke ---cert-name certificate_name
  • le supprimer. certbot delete --cert-name certificate_name

Opérations courantes

 Voir les certificats présents

certbot certificates

Modifier les domaines d'un certificat

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

 Automatiser par nginx

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

Conclusion

Un peu de documentation :

  • https://www.deltasight.fr/differentes-options-certbot/

Article précédent Article suivant