Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | |||
informatique:serveur:web-linux-apache:ssl-let-s-encrypt-certbot [2023/02/09 16:14] – ↷ Liens modifiés en raison d'un déplacement. Cédric ABONNEL | informatique:serveur:web-linux-apache:ssl-let-s-encrypt-certbot [2023/02/10 22:48] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. Cédric ABONNEL | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== certbot pour Let's Encrypt ====== | ||
+ | {{ informatique: | ||
+ | |||
+ | **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' | ||
+ | |||
+ | 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 / | ||
+ | |||
+ | |||
+ | ===== - 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 ''/ | ||
+ | ^ siteName | Nom du site Internet. Par exemple '' | ||
+ | |||
+ | <code BASH> | ||
+ | read -p "Quel est votre nom de domaine ? " siteName | ||
+ | read -p " | ||
+ | sudo certbot certonly --webroot -w $dirWeb -d $siteName --register-unsafely-without-email | ||
+ | </ | ||
+ | |||
+ | L' | ||
+ | * pas d' | ||
+ | * pas de mail à saisir | ||
+ | * autonomie sur la configuration Apache 2 | ||
+ | |||
+ | Quelques **chemins** à retenir : | ||
+ | |||
+ | ^ fichier de configuration | ||
+ | ^ dossier archive | / | ||
+ | ^ fichier cert | / | ||
+ | ^ fichier privkey | ||
+ | ^ fichier chain | / | ||
+ | ^ fichier fullchain | ||
+ | |||
+ | Pour enregistrer un domaine principal avec et sans les **www**, il faut utiliser le script suivant : | ||
+ | <code 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 / | ||
+ | </ | ||
+ | |||
+ | ===== - Générer un certificat - gestion automatique ===== | ||
+ | |||
+ | Si vous avez effectué le paragraphe précédent [[# | ||
+ | |||
+ | Exécutez le commande suivant pour générer un certificat et édité votre configuration Apache de manière automatique. Le protocole **https** s' | ||
+ | |||
+ | sudo certbot --apache | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | ===== - Renouveler les certificats automatiquement ===== | ||
+ | |||
+ | Éditer la tâche des tâches Linux du compte '' | ||
+ | < | ||
+ | sudo crontab -e | ||
+ | </ | ||
+ | |||
+ | La tâche doit exécutée le programme '' | ||
+ | |||
+ | < | ||
+ | 0 23 1-7 */2 4 python -c ' | ||
+ | </ | ||
+ | |||
+ | Explications : | ||
+ | < | ||
+ | Tous les deux mois ( 0 23 1-7 < | ||
+ | à 23 heures ( < | ||
+ | le premier jeudi ( 0 0 < | ||
+ | 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' | ||
+ | |||
+ | ===== - Afficher les dates du certificats ===== | ||
+ | |||
+ | Pour afficher les dates de génération et d' | ||
+ | |||
+ | < | ||
+ | sudo ls / | ||
+ | read -p "Quel est votre nom de domaine ?" siteName | ||
+ | sudo openssl x509 -noout -dates -in / | ||
+ | </ | ||
+ | |||
+ | --- | ||
+ | |||
+ | Pour afficher les dates de génération et d' | ||
+ | |||
+ | < | ||
+ | openssl s_client -connect www.w3.org: | ||
+ | </ | ||
+ | |||
+ | Exemple de résultat : | ||
+ | |||
+ | {{informatique: | ||
+ | ===== - Réinitialiser la configuration Let's Encrypt ===== | ||
+ | |||
+ | Façon documentée : | ||
+ | |||
+ | <code BASH> | ||
+ | echo Affichage des noms possibles : | ||
+ | sudo ls / | ||
+ | echo . | ||
+ | echo "Quel nom de domaine ?" | ||
+ | read siteName | ||
+ | certbot delete --cert-name $siteName | ||
+ | </ | ||
+ | |||
+ | |||
+ | Façon brutale : | ||
+ | |||
+ | <code BASH letsencrypt_erase> | ||
+ | #!/bin/bash | ||
+ | # réinitialiser let's encrypt pour un domaine precis | ||
+ | echo Affichage des noms possibles : | ||
+ | sudo ls / | ||
+ | echo . | ||
+ | echo "Quel nom de domaine ?" | ||
+ | read siteName | ||
+ | sudo rm -fr / | ||
+ | sudo rm / | ||
+ | sudo rm -fr / | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||