Dernière mise à jour : 13/07/2023 à 13h33
Table des matières
Introduction
Comme décrit dans un article précédent, j'utilise un serveur nginx pour faire du reverse proxy. Je vais vous présenter ici comment mettre en place un certificat auto-signé Let's Encrypt sur ce serveur.
Etapes préliminaires
Paramétrage de sa box
En premier lieu, il est nécessaire de rediriger les ports 80 et 443 de sa box vers le serveur web nginx. Je vous met ici pour exemple à quoi cela ressemble sur ma box SFR (les lignes 1 et 3 correspondent aux redirections en question).

Désactivation des redirections
Afin de s'assurer de ne pas rediriger les requêtes en http vers https automatiquement (nous verrons cela par la suite), il est nécessaire de désactiver les sites activés. Plusieurs solutions sont possibles, je vous en propose une :
Code BASH :
cd /etc/nginx/sites-enabled
Code BASH :
find . -type l -exec mv {} {}.tmp \;
Ajouter une ligne dans le fichier suivant :
Code BASH :
vim /etc/nginx/proxy_params
Ajouter la ligne :
Code TEXT :
proxy_redirect off;
On redémarre le serveur web pour prendre en compte les paramétrages :
Code BASH :
nginx -s reload
Installation du certificat
Création du certificat
Installer certbot :
Code BASH :
sudo apt install certbot
Exécuter certbot :
Code BASH :
certbot certonly -d jeedom.mondomaine.fr,plex.mondomaine.fr,nas.mondomaine.fr
Reconfiguration du serveur web
Une fois le certificat installé, on remet en place les fichiers de configuration. On peut le faire avec la commande suivante ou manuellement si on a peu de fichiers de configuration :
Code BASH :
find . -name "*.tmp" -exec sh -c 'mv "$1" "${1%.tmp}"' _ {} \;
Recharger le serveur web :
Code BASH :
nginx -s reload
Pour ajouter un domaine ou un sous-domaine
Si vous souhaitez ajouter un domaine ou un sous-domaine à votre certificat, c'est possible avec la commande suivante :
Code BASH :
certbot certonly --expand -d jeedom.mondomaine.fr,nas.mondomaine.fr,plex.mondomaine.fr,nextcloud.mondomaine.fr
Renouveller le certificat
Les certificats Let's Encrypt sont gratuits mais leur inconvénient est qu'ils ne sont valables que 3 mois, il faut donc les renouveler. Si vous avez entré votre adresse mail lors de la création du certificat, vous recevrez plusieurs mails dans les semaines qui précèdent leur expiration.
Pour renouveler le certificat :
Code BASH :
certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
Il est possible d'automatiser cette tâche avec cron, je vous renvoi vers des articles qui traitent de cron. Cependant, je vous recommande de tester une fois ou deux le renouvellement manuel afin de vérifier que cela fonctionne.
Obtenir des informations sur les certificats installés
Il est possible d'obtenir des informations sur le certificat installé (noms de domaines et sous-domaines, date de validité,...) :
Code BASH :
certbot certificates
Conclusion
Vous pouvez trouver d'avantages d'information sur la commande certbot et toutes ses options (elles sont nombreuses) : User Guide - Certbot