Files
varlog/_cache/articles/c5c1ae75-bf4e-4526-ab1e-a5583292aad9.json
T
2026-05-15 10:37:48 +02:00

1 line
5.6 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"uuid":"c5c1ae75-bf4e-4526-ab1e-a5583292aad9","slug":"ssl-let-s-encrypt-certbot","title":"certbot pour Let's Encrypt","author":"cedric@abonnel.fr","published":true,"published_at":"2023-02-10 22:48:33","created_at":"2023-02-10 22:48:33","updated_at":"2023-02-10 22:48:33","revisions":[],"cover":"","files_meta":[],"external_links":[],"seo_title":"","seo_description":"","og_image":"","category":"Informatique","content":"# certbot pour Let's Encrypt\n\n![cerbot pour let's encrypt](20200507-002818.png)\n\n**Certbot** est un binaire qui permet de mettre en œuvre un certificat SSL pour un domaine d'un site Internet.\n\nVoici les actions a effectuer sur **Linux** **Debian 10**.\n\nDepuis 2020, **certbot** est installé depuis **snapcraft**.\n\n## - Installer snap\nSi vous n'avez pas encore installé **snap**, il faut executer les commandes suivantes dans un **terminal**. Les commandes doivent avoir une élevation des droits.\n\n sudo apt update\n sudo apt install snapd\n sudo snap install core\n\nSi **snap** est déjà installé, assurez-vous d'être à jour :\n\n sudo snap refresh core\n \n\n## - Installer certbot\nExécutez la commande suivante oour installer **cerbot** sur votre machine. Ceci est a exéctuer dans un terminal.\n\n sudo snap install --classic certbot\n sudo ln -s /snap/bin/certbot /usr/bin/certbot\n\n## - Générer un certificat - gestion manuelle\nSi vous suivez ce guide, je vous conseille une gestion manuelle de vos certificats.\n\nIl y a deux variables :\n| dirWeb | Dossier des données du site. Pour habitude, c'est quelque chose du genre `/var/www/html/` | |\n| ---------------------------------------------------------------------------------------------------- |\n| siteName | Nom du site Internet. Par exemple `abonnel.fr` | |\n\n```BASH\nread -p \"Quel est votre nom de domaine ? \" siteName\nread -p \"Dossier Web du site ? \" dirWeb\nsudo certbot certonly --webroot -w $dirWeb -d $siteName --register-unsafely-without-email\n```\n\nL'avantage de ce script :\n- pas d'arrêt d'Apache 2\n- pas de mail à saisir\n- autonomie sur la configuration Apache 2\n\nQuelques **chemins** à retenir :\n\n| fichier de configuration | /etc/letsencrypt/renewal/$siteName.conf | |\n| ---------------------------------------------------------------------- |\n| dossier archive | /etc/letsencrypt/archive/$siteName | |\n| fichier cert | /etc/letsencrypt/live/$siteName/cert.pem | |\n| fichier privkey | /etc/letsencrypt/live/$siteName/privkey.pem | |\n| fichier chain | /etc/letsencrypt/live/$siteName/chain.pem | |\n| fichier fullchain | /etc/letsencrypt/live/$siteName/fullchain.pem | |\n\nPour enregistrer un domaine principal avec et sans les **www**, il faut utiliser le script suivant :\n```BASH\necho \"Quel nom de domaine (avec www) ?\"\nread siteNameWww\necho \"Quel nom de domaine (sans les www) ?\"\nread siteName\nsudo certbot certonly --webroot -w /var/www/html/ -d $siteName -d $siteNameWww --register-unsafely-without-email\n```\n\n## - Générer un certificat - gestion automatique\nSi vous avez effectué le paragraphe précédent , il est inutile de suivre les recommandations de ce chapitre.\n\nExé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.\n\n sudo certbot --apache\n \n \n\n## - Renouveler les certificats automatiquement\nÉditer la tâche des tâches Linux du compte `root`, *crontab* :\n```\nsudo crontab -e\n```\n\nLa 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`.\n\n```\n0 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\n```\n\nExplications :\n<html><pre>\nTous les deux mois ( 0 23 1-7 <strong>*/2</strong> 4 )\nà 23 heures ( <strong>0 23</strong> 1-7 */2 4 ),\nle premier jeudi ( 0 0 <strong>1-7</strong> */2 <strong>4</strong> ),\nlancement d'un script Python, qui retarde 1 heure au maximum (random.random() * 3600),\nlexécution de la mise à jour de certbot.\n</pre></html>\n\nVous pouvez trouver d'autres informations sur la page <https://crontab.guru/#0_23_1-7_*/2_4>\n\n## - Afficher les dates du certificats\nPour afficher les dates de génération et d'expiration d'un certificat en local sur un serveur :\n\n```\nsudo ls /etc/letsencrypt/live/\nread -p \"Quel est votre nom de domaine ?\" siteName\nsudo openssl x509 -noout -dates -in /etc/letsencrypt/live/$siteName/fullchain.pem\n```\n\n---\n\nPour afficher les dates de génération et d'expiration d'un certificat d'un site distant :\n\n```\nopenssl s_client -connect www.w3.org:443| openssl x509 -noout -dates\n```\n\nExemple de résultat :\n\n![Exemple de résultat pour les dates du certificat de www.w3.org](20210117-213056.png)\n## - Réinitialiser la configuration Let's Encrypt\nFaçon documentée :\n\n```BASH\necho Affichage des noms possibles :\nsudo ls /etc/letsencrypt/live\necho .\necho \"Quel nom de domaine ?\"\nread siteName\ncertbot delete --cert-name $siteName\n```\n\nFaçon brutale :\n\n```BASH\n#!/bin/bash\n# réinitialiser let's encrypt pour un domaine precis\necho Affichage des noms possibles :\nsudo ls /etc/letsencrypt/live\necho .\necho \"Quel nom de domaine ?\"\nread siteName\nsudo rm -fr /etc/letsencrypt/live/$siteName/\nsudo rm /etc/letsencrypt/renewal/$siteName.conf \nsudo rm -fr /etc/letsencrypt/archive/$siteName/\n```","featured":false,"tags":[]}