 **Certbot** est un binaire qui permet de mettre en œuvre un certificat SSL pour un domaine d'un site Internet. Voici les actions a effectuer sur **Linux** **Debian 10**. Depuis 2020, **certbot** est installé depuis **snapcraft**. ## - Installer snap Si vous n'avez pas encore installé **snap**, il faut executer les commandes suivantes dans un **terminal**. Les commandes doivent avoir une élevation des droits. sudo apt update sudo apt install snapd sudo snap install core Si **snap** est déjà installé, assurez-vous d'être à jour : sudo snap refresh core ## - Installer certbot Exécutez la commande suivante oour installer **cerbot** sur votre machine. Ceci est a exéctuer dans un terminal. sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot ## - Générer un certificat - gestion manuelle Si vous suivez ce guide, je vous conseille une gestion manuelle de vos certificats. Il y a deux variables : | dirWeb | Dossier des données du site. Pour habitude, c'est quelque chose du genre `/var/www/html/` | | | ---------------------------------------------------------------------------------------------------- | | siteName | Nom du site Internet. Par exemple `abonnel.fr` | | ```BASH read -p "Quel est votre nom de domaine ? " siteName read -p "Dossier Web du site ? " dirWeb sudo certbot certonly --webroot -w $dirWeb -d $siteName --register-unsafely-without-email ``` L'avantage de ce script : - pas d'arrêt d'Apache 2 - pas de mail à saisir - autonomie sur la configuration Apache 2 Quelques **chemins** à retenir : | fichier de configuration | /etc/letsencrypt/renewal/$siteName.conf | | | ---------------------------------------------------------------------- | | dossier archive | /etc/letsencrypt/archive/$siteName | | | fichier cert | /etc/letsencrypt/live/$siteName/cert.pem | | | fichier privkey | /etc/letsencrypt/live/$siteName/privkey.pem | | | fichier chain | /etc/letsencrypt/live/$siteName/chain.pem | | | fichier fullchain | /etc/letsencrypt/live/$siteName/fullchain.pem | | Pour enregistrer un domaine principal avec et sans les **www**, il faut utiliser le script suivant : ```BASH echo "Quel nom de domaine (avec www) ?" read siteNameWww echo "Quel nom de domaine (sans les www) ?" read siteName sudo certbot certonly --webroot -w /var/www/html/ -d $siteName -d $siteNameWww --register-unsafely-without-email ``` ## - Générer un certificat - gestion automatique Si vous avez effectué le paragraphe précédent , il est inutile de suivre les recommandations de ce chapitre. Exécutez le commande suivant pour générer un certificat et édité votre configuration Apache de manière automatique. Le protocole **https** s'active de manière automatique, en une seule étape. sudo certbot --apache ## - Renouveler les certificats automatiquement Éditer la tâche des tâches Linux du compte `root`, *crontab* : ``` sudo crontab -e ``` La tâche doit exécutée le programme `certbot` avec l'option de renouvellement, `renew`. L'option `post-hook` permet d'indiquer la commande à exécuter après le traitement de `certbot`. Dans notre cas, on demande à `systemctl` de recharger la configuration `Apache 2`. ``` 0 23 1-7 */2 4 python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/bin/certbot renew --post-hook "systemctl reload apache2" >> /var/log/letsencrypt/renew.log ``` Explications :
Tous les deux mois ( 0 23 1-7 */2 4 ) à 23 heures ( 0 23 1-7 */2 4 ), le premier jeudi ( 0 0 1-7 */2 4 ), lancement d'un script Python, qui retarde 1 heure au maximum (random.random() * 3600), l’exécution de la mise à jour de certbot.Vous pouvez trouver d'autres informations sur la page