abonnel-siteweb/data/pages/informatique/serveur/web-linux-apache/ssl-let-s_encrypt-certbot-a...

138 lines
4.7 KiB
Plaintext
Raw Normal View History

2024-01-07 10:02:35 +01:00
====== [OBSOLÈTE] certbot auto pour Let's Encrypt ======
{{ informatique:applications:pasted:20200507-002818.png?75x75|cerbot pour let's encrypt}}
<WRAP center round important 60%>
Depuis 2020, l'installation s'effectue depuis **certbot** avec **snap**
Suivez le guide dans l'article [[informatique:serveur:web-linux-apache:ssl-let-s-encrypt-certbot]]
</WRAP>
**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 dexécuter //Certbot// de manière optimale.
===== - Télécharger CERTBOT =====
En terminal, jexécute ''wget''
<code>
wget https://dl.eff.org/certbot-auto
</code>
===== - Déployer CERTBOT =====
<code>
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
</code>
===== - Application CERTBOT pour un domaine =====
Exécution de l'utilitaire pour configurer un site avec les options suivantes :
<code>
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
</code>
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 :
<code>
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
</code>
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 dexécuter la commande :
<code>
$ sudo certbot-auto renew
</code>
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// :
<code>
sudo crontab -e
</code>
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''.
<code>
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
</code>
Explications :
<html><pre>
Tous les deux mois ( 0 23 1-7 <strong>*/2</strong> 4 )
à 23 heures ( <strong>0 23</strong> 1-7 */2 4 ),
le premier jeudi ( 0 0 <strong>1-7</strong> */2 <strong>4</strong> ),
lancement d'un script Python, qui retarde 1 heure au maximum (random.random() * 3600),
lexécution de la mise à jour de certbot.
</pre></html>
===== - Afficher les dates du certificats =====
<code>
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
</code>
===== - Réinitialiser la configuration Let's Encrypt =====
<code BASH letsencrypt_erase>
#!/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/
</code>