![cerbot pour let's encrypt](20200507-002818.png) Depuis 2020, l'installation s'effectue depuis **certbot** avec **snap** Suivez le guide dans l'article **Certbot** est un binaire qui permet de mettre en œuvre un certificat SSL pour un domaine d'un site Internet. **Certbot-auto** est une solution complète qui permet d’exécuter *Certbot* de manière optimale. ## - Télécharger CERTBOT En terminal, j’exécute `wget` ``` wget https:*dl.eff.org/certbot-auto ``` ## - Déployer CERTBOT ``` sudo mv certbot-auto /usr/local/bin/certbot-auto sudo chown root /usr/local/bin/certbot-auto sudo chmod 0755 /usr/local/bin/certbot-auto /usr/local/bin/certbot-auto --install-only ``` ## - Application CERTBOT pour un domaine Exécution de l'utilitaire pour configurer un site avec les options suivantes : ``` read -p "Quel est votre nom de domaine ? " siteName read -p "Dossier Web du site ? " dirWeb sudo certbot-auto 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 | | ## - Application CERTBOT pour un domaine principal Exécution de l'utilitaire pour configurer un domaine principal. Un domaine principal est accessible avec les *www* et sans : ``` echo "Quel nom de domaine (avec www) ?" read siteNameWww echo "Quel nom de domaine (sans les www) ?" read siteName certbot-auto certonly --webroot -w /var/www/html/ -d $siteNameWww -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/$siteNameWww.conf | | | ------------------------------------------------------------------------- | | dossier archive | /etc/letsencrypt/archive/$siteNameWww | | | fichier cert | /etc/letsencrypt/live/$siteNameWww/cert.pem | | | fichier privkey | /etc/letsencrypt/live/$siteNameWww/privkey.pem | | | fichier chain | /etc/letsencrypt/live/$siteNameWww/chain.pem | | | fichier fullchain | /etc/letsencrypt/live/$siteNameWww/fullchain.pem | | ## - Renouveler les certificats Il suffit d’exécuter la commande : ``` $ sudo certbot-auto renew ``` Les paramètres `cerbot` sont automatiquement traités et une mise à jour des certificats sont opérés. Il faudra redémarrer le service Web (par exemple `systemctl reload apache2`). ## - 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-auto` avec l'option de renouvellement, `renew`. L'option `post-hook` permet d'indiquer la commande à exécuter après le traitement de `certbot-auto`. 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/local/bin/certbot-auto 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.
## - Afficher les dates du certificats ``` sudo ls /etc/letsencrypt/live/ read -p "Quel est votre nom de domaine ?" siteName sudo openssl x509 -noout -dates -in /etc/letsencrypt/live/$siteName/fullchain.pem ``` ## - Réinitialiser la configuration Let's Encrypt ```BASH #!/bin/bash # réinitialiser let's encrypt pour un domaine precis echo Affichage des noms possibles : sudo ls /etc/letsencrypt/live echo . echo "Quel nom de domaine ?" read siteName sudo rm -fr /etc/letsencrypt/live/$siteName/ sudo rm /etc/letsencrypt/renewal/$siteName.conf sudo rm -fr /etc/letsencrypt/archive/$siteName/ ```