Let's Encrypt - Comment se faciliter la vie ?
Mon serveur web est composé d'un frontend nginx et d'un backend apache. L'ensemble de mes certificats (à l'exception du wildcard deblan.org) est géré par Let's Encrypt. Mon problème jusqu'à aujourd'hui était que lors de la création ou le renouvellement d'un certificat, mon service nginx devait être coupé pour réaliser l'authentification nécessaire à la validation faite par Let's Encrypt.
Le service nginx, tel que je l'ai configuré, possède un fichier de configuration unique qui écoute sur le port 80. Ce fichier permet :
- d'indiquer mon backend apache
- de gérer les problématiques de cache des assets (images, css, javascripts, etc.)
Vous pouvez remarquer l'include
à la ligne 20. Voici le contenu du snippet :
Il identifie un répertoire unique où seront générés les fichiers d'authentification de Let's Encrypt. Il aura fallu créer ce répertoire au préalable (sudo mkdir -p /var/www/letsencrypt/
).
Reste à présent 2 scripts :
- celui qui permet de générer un certificat
- celui qui permet de renouveler les certificats qui vont expirer
Pour la génération d'un certificat, j'ai souhaité une ligne de commande simple : le-get-certificate monsite.com www.monsite.com foo.monsite.com
. Voici son contenu :
Edit : la commande cerbot renew
fait le travail tout seul. L'intérêt de mon script pourrait d'ajouter rapidement des domaines à certifier en augmentant le CSR automatiquement.
Edit 2 : certbot renew --webroot -w /var/www/letsencrypt --agree-tos
est sans doute la meilleurs manière de renouveler les certificats. J'ai rencontré quelques problèmes avec le script proposé ci-dessous.
Concernant le renouvellement, le script suivant s'appuie sur un fichier de configuration que vous devrez alimenter à chaque création de certificat. Il doit être créé à cet emplacement : /etc/letsencrypt/domains.conf
. Voici à quoi il ressemble chez moi et j'ai ajouté la ligne nécessaire pour l'exemple de la commande de création :
Voici à présent le script que devra être exécuté périodiquement pour le renouvellement :
J'espère que cela pourra vous être utile et si vous avez des remarques, n'hésitez pas à m'en faire part :)