Ajout section debian 9 + section erreur Unexpected value for no-self-upgrade + amélioration sommaire

This commit is contained in:
whirigoyen 2021-12-20 11:17:43 +01:00
parent 32d731fee7
commit d590b0a3b2

View file

@ -13,7 +13,7 @@ ce qui nécessite d'avoir temporairement un serveur HTTP sur le port TCP/80 de l
Le certificat intermédiaire de Let's Encrypt est également signé par l'autorité de certification [IdenTrust](https://www.identrust.com/) préinstallée dans la plupart des navigateurs.
## Installation
# Installation
On installe certbot et ses dépendances :
@ -24,13 +24,13 @@ $ certbot --version
certbot 1.12.0
~~~
###
### Configuration du Serveur Web
## Configuration du Serveur Web
Pour vérifier que la demande est légitime, Let's Encrypt doit accéder à un fichier temporaire via HTTP sur le port TCP/80 de l'adresse IP correspondant au _Common Name_ du certificat à signer, du type *http://www.example.com/.well-known/acme-challenge/hNgN_ygEFf-XiHJd6VErwNbfRcpP2CbJmIN3qpJXZOQ*
#### Apache
### Apache
Configuration :
@ -48,7 +48,8 @@ Alias /.well-known/acme-challenge /var/lib/letsencrypt/.well-known/acme-challeng
</Directory>
~~~
#### Nginx
### Nginx
Préférez importer le snippet `/etc/nginx/snippets/letsencrypt.conf`, mais si une configuration manuelle est nécessaire:
@ -73,6 +74,8 @@ location ~ /.well-known/acme-challenge {
~~~
# Utilisation
## Génération du certificat
~~~
@ -85,6 +88,7 @@ Pour faire les actions normalement sauf la génération du certificat et la modi
En combinant `--test-cert` et `--dry-run` on peut donc faire un test de génération de certificat sans modification locale et sans risque de pénalisation en cas d'échex répétés.
## Renouvellement du certificat
Les certificats Let's Encrypt sont valables 90 jours. Un timer systemd roule automatiquement à chaque jour pour revalider le certificat.
@ -203,14 +207,14 @@ Pour exécuter un hook manuellement, par exemple après la création du certific
$ VERBOSE=1 RENEWED_LINEAGE=/etc/letsencrypt/live/<cert-name> /etc/letsencrypt/renewal-hooks/deploy/<hook>.sh
~~~
#
## Lister les certificats
## Liste des certificats
~~~
# certbot certificates
~~~
## Suppression d'un certificat
~~~
@ -223,17 +227,7 @@ $ VERBOSE=1 RENEWED_LINEAGE=/etc/letsencrypt/live/<cert-name> /etc/letsencrypt/r
Pour automatiser l'installation de _Certbot_ et la génération/renouvellement de certificats, nous utilisons des scripts : [Evoacme](https://forge.evolix.org/projects/ansible-roles/repository/revisions/stable/show/certbot).
## FAQ
### Certificat Wildcard ou EV
Let's Encrypt permet de générer un certificat Wildcard (via challenge DNS) mais pas EV (Extended Validation).
### Je n'ai pas de port TCP/80 accessible
Let's Encrypt vérifie la légitimité de la demande en faisant une requête DNS sur l'enregistrement DNS correspondant au _Common Name_ du certificat à signer (si il n'y a pas d'enregistrement DNS propagé mondialement, c'est donc impossible d'utiliser Let's Encrypt) et effectue une requête HTTP vers le port TCP/80 de l'adresse IP : il faut donc obligatoirement avoir temporairement un service HTTP sur le port TCP/80... au moins temporairement.
### Challenge DNS
## Challenge DNS
Si notre serveur web n'est pas accessible de l'extérieur, on peut utiliser un challenge par DNS plutôt que via une page HTTP.
@ -244,19 +238,10 @@ $ certbot -d domain.example.com --manual --preferred-challenges dns certonly
Il suffira alors de créer l'entrée DNS que certbot affichera et continuer le processus interactif.
### Rate-limits
# Mises-à-jour
Doc officielle : <https://letsencrypt.org/docs/rate-limits/>
L'API de Let's Encrypt dispose un « rate limiting » afin d'éviter les abus.
- 20 certificats pour 1 domaine maximum par semaine. 1 domaine est la partie juste avant le TLD. www.example.com, le domaine est example.com. blog.exemple.fr, le domaine est exemple.fr ; Si vous faites 1 certificat par sous-domaines, vous êtes donc limités à 20 par semaine. Il est donc préférable de regrouper plusieurs sous-domaines dans un seul certificat (SAN). La limite du SAN est de 100 sous-domaines. La limite est donc de 2000 certificats pour 1 domaine par semaine si vous mettez 100 sous-domaines par certificats.
- La limite de renouvellement d'un certificat est de 5 par semaine. Si votre procédure de renouvellement automatique échoue, au bout de 5 jours vous allez être banni pendant 1 semaine.
- La limite d'échec de validation du challenge est de 5 par heures (par adresse IP et utilisateur enregistré par email) ;
Si vous échouez 5 fois à valider le challenge DNS, on peut penser qu'il suffit d'attendre 1h, sauf qu'en fait non. Le « bannissement » est pour 1 semaine !
### Mettre à jour certbot en debian 8, suite a l'arret du protocole ACMEv1
## Mise-à-jour de certbot en Debian 8 (suite a larrêt du protocole ACMEv1)
On désinstalle le paquet certbot :
@ -282,7 +267,63 @@ Il faut remplacer certbot par le script letsencrypt-auto comme ceci :
# ln -s /usr/local/bin/letsencrypt-auto /usr/local/bin/certbot
~~~
### Erreur de renouvellement liée à webroot_path
## Mise-à-jour de certbot en Debian 9
Si `/usr/local/bin/certbot` est présent :
~~~bash
mv /usr/local/bin/certbot /usr/local/bin/certbot.bak
hash -d certbot # renouvelle le cache des exécutables de bash
~~~
Dans `/etc/letsencrypt/cli.ini`, si la ligne `no-self-upgrade = 0`, commentez-la.
Réinstallez ou mettez-à-jour la version de certbot présent dans les dépôts Debian :
~~~bash
apt install certbot
~~~
A présent, testez votre installation avec la commande `certbot certificates`.
En l'abence ou en cas d'oubli des modifications précédentes, on rencontre les erreurs :
~~~
Skipping bootstrap because certbot-auto is deprecated on this system.
Your system is not supported by certbot-auto anymore.
Certbot cannot be installed.
Please visit https://certbot.eff.org/ to check for other alternatives.
~~~
# Troubleshooting
## Certificat Wildcard ou EV
Let's Encrypt permet de générer un certificat Wildcard (via challenge DNS) mais pas EV (Extended Validation).
## Je n'ai pas de port TCP/80 accessible
Let's Encrypt vérifie la légitimité de la demande en faisant une requête DNS sur l'enregistrement DNS correspondant au _Common Name_ du certificat à signer (si il n'y a pas d'enregistrement DNS propagé mondialement, c'est donc impossible d'utiliser Let's Encrypt) et effectue une requête HTTP vers le port TCP/80 de l'adresse IP : il faut donc obligatoirement avoir temporairement un service HTTP sur le port TCP/80... au moins temporairement.
## Rate-limits
Doc officielle : <https://letsencrypt.org/docs/rate-limits/>
L'API de Let's Encrypt dispose un « rate limiting » afin d'éviter les abus.
- 20 certificats pour 1 domaine maximum par semaine. 1 domaine est la partie juste avant le TLD. www.example.com, le domaine est example.com. blog.exemple.fr, le domaine est exemple.fr ; Si vous faites 1 certificat par sous-domaines, vous êtes donc limités à 20 par semaine. Il est donc préférable de regrouper plusieurs sous-domaines dans un seul certificat (SAN). La limite du SAN est de 100 sous-domaines. La limite est donc de 2000 certificats pour 1 domaine par semaine si vous mettez 100 sous-domaines par certificats.
- La limite de renouvellement d'un certificat est de 5 par semaine. Si votre procédure de renouvellement automatique échoue, au bout de 5 jours vous allez être banni pendant 1 semaine.
- La limite d'échec de validation du challenge est de 5 par heures (par adresse IP et utilisateur enregistré par email) ;
Si vous échouez 5 fois à valider le challenge DNS, on peut penser qu'il suffit d'attendre 1h, sauf qu'en fait non. Le « bannissement » est pour 1 semaine !
## Erreur de renouvellement liée à webroot_path
Il arrive que la configuration de renouvellement d'un certificat "déconne" et perde une partie de la configuration, entrainant une impossibilité de renouvellement.
@ -307,7 +348,7 @@ Voici le correctif :
~~~
### Incident avec le certificat DST X3 du 30 septembre 2021
## Incident avec le certificat DST X3 du 30 septembre 2021
Le 30 septembre 2021, le certificat DST X3 d'IdenTrust a expiré, provoquant de nombreux effets de bord.
Plus d'explications sur <https://blog.evolix.com/expiration-du-certificat-identrust-dst-x3-et-lets-encrypt/>
@ -341,3 +382,16 @@ Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5
Attention, au prochain renouvellement Let's Encrypt celui-ci va revenir !
Pour le bannir définitivement, il faut avoir un certbot récent et utiliser l'option `preferred-chain`.
## Erreur : Unexpected value for no-self-upgrade
Si vous rencontrez l'erreur suivante alors que vous n'avez pas fournit l'option `--no-self-upgrade` en argument :
~~~
certbot: error: Unexpected value for no-self-upgrade: '0'. Expecting 'true', 'false', 'yes', or 'no'
~~~
Dans `/etc/letsencrypt/cli.ini`, si elle est présente, commentez la ligne `no-self-upgrade = 0`.