Ajout du challenge DNS

This commit is contained in:
jlecour 2021-11-04 12:00:02 +01:00
parent d4a35180cf
commit 5d8c700e1b

View file

@ -141,17 +141,98 @@ Pour générer un certificat simple pour "www.example.com" avec un challenge `ht
### Challenge dns-01
_TODO_
Ce type de challenge est particulièrement utile quand le domaine nest pas accessible en HTTP.
Il est même le seul moyen possible pour créer un certificat « wildcard ».
Le challenge DNS se fait soit en manuel/interactif (acme.sh nous donne les instructions et attend quon indique que lenregistrement DNS est en place), soit en mode automatique (en utilisant lAPI du gestionnaire de la zone DNS).
#### Challenge DNS manuel
Voir <https://github.com/acmesh-official/acme.sh/wiki/DNS-manual-mode>
Cette procédure est à éviter autant que possible, car elle force à refaire lopération au plus tard tous les 3mois.
En revanche elle est pratique pour un certificat temporaire, en attendant que le mode DNS automatique ou un lemode http-01 soit possible.
~~~
# acme.sh --issue --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --domain example.com
~~~
Le processus va se dérouler jusquà afficher les informations à ajouter dans la zone DNS:
~~~
Domain: '_acme-challenge.example.com'
TXT value: '3TFLt28SkxlU4fzktKqPCpE2-fLLaKEfeZCXdklD_GY
~~~
Une fois cet enregistrement ajouté dans votre zone et vérifié que les serveurs autoritaires renvoient bien linfo, on peut demander un renouvellement du certificat:
~~~
# acme.sh --renew --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --domain example.com
~~~
#### Challenge DNS automatique
Ce mode utilise lAPI du gestionnaire de la zone DNS pour y insérer un enregistrement de challenge.
La procédure est légèrement différente pour chaque gestionnaire.
##### Gandi LiveDNS
Il faut [obtenir une clé dAPI](https://doc.livedns.gandi.net/).
Pour chaque certificat à créer de cette manière il faut exporter les accréditations:
~~~
# export GANDI_LIVEDNS_KEY="your key"
~~~
… puis demander la création du certificat:
~~~
# acme.sh --issue --dns dns_gandi_livedns --domain example.com --domain www.example.com
~~~
##### OVH/Kimsufi/SoYouStart
Sur votre compte OVH il faut [créer une «application»](https://eu.api.ovh.com/createApp/) qui vous donnera une «clé dapplication» et un «secret dapplication».
Pour chaque certificat à créer de cette manière il faut exporter les accréditations:
~~~
# export OVH_AK="your application key"
# export OVH_AS="your application secret"
~~~
… puis demander la création du certificat:
~~~
# acme.sh --issue --dns dns_ovh --domain example.com --domain www.example.com
~~~
À la première invocation, il y aura une erreur qui indiquera quil faut authentifier lapplication.
~~~
Using OVH endpoint: ovh-eu
OVH consumer key is empty, Let's get one:
Please open this link to do authentication: https://eu.api.ovh.com/auth/?credentialToken=n0Qbjm6wBdBr2KiSqIuYSEnixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Here is a guide for you: https://github.com/Neilpang/acme.sh/wiki/How-to-use-OVH-domain-api
Please retry after the authentication is done.
Error add txt for domain:_acme-challenge.example.com
~~~
Il faut simplement cliquer sur le lien indiqué: https://eu.api.ovh.com/auth/?credentialToken=n0Qbjm6wBdBr2KiSqIuYSEnixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
On peut alors relancer la commande de création du certificat.
## Mise en œuvre des certificats
Lors de la génération dun certificat, les fichiers de base sont stockés dans une structure interne (susceptible de changer sans préavis). Il faut donc utiliser les fonctions de déploiements afin dinstaller les fichiers nécessaires.
Acme.sh propose 2 approches complémentaires pour la mise en œuvre des certificats : installation et déploiement.
Acme.sh propose 2 approches complémentaires pour la mise en œuvre des certificats: installation et déploiement.
### Installation locale
C'est le meilleur moyen de copier les fichiers de certificats dont on a besoin à un emplacement prévu et de recharger le service associé.
Cest le meilleur moyen de copier les fichiers de certificats dont on a besoin à un emplacement prévu et de recharger le service associé.
Exemple pour un serveur web Apache local (voir <https://github.com/acmesh-official/acme.sh/wiki/Deploy-ssl-certs-to-apache-server>):
@ -159,11 +240,11 @@ Exemple pour un serveur web Apache local (voir <https://github.com/acmesh-offici
# acme.sh --install-cert --domain www.example.com --key-file /etc/apache2/ssl/www.example.com/privkey.pem --fullchain-file /etc/apache2/ssl/www.example.com/fullchain.pem --reloadcmd "systemctl reload apache2"
~~~
Notez que la configuration des VHosts pour utiliser le certificat n'ets pas faite par acme.sh, il faut le faire soi-même.
Notez que la configuration des VHosts pour utiliser le certificat n'est pas faite par acme.sh, il faut le faire soi-même.
### Scripts de déploiement
Acme.sh propose toute un catalogue de "hooks" qui peuvent être utilisés. Ils permettent d'exécuter des séquences d'actions beaucoup plus complexes. Voir <https://github.com/acmesh-official/acme.sh/wiki/deployhooks>.
Acme.sh propose toute un catalogue de "hooks" qui peuvent être utilisés. Ils permettent dexécuter des séquences dactions beaucoup plus complexes. Voir <https://github.com/acmesh-official/acme.sh/wiki/deployhooks>.
Les hooks sont installés dans le dossier `/usr/local/lib/acme.sh/deploy`.
@ -171,7 +252,7 @@ Il en existe un pour HAproxy qui se charge de concaténer les bons éléments et
Il en existe aussi un pour copier les fichiers sur un ou plusieurs serveurs distants par SSH.
La configuration des hooks passe par des variables d'environnement.
La configuration des hooks passe par des variables denvironnement.
~~~
# export DEPLOY_SSH_USER=me
@ -181,7 +262,7 @@ La configuration des hooks passe par des variables d'environnement.
# acme.sh --deploy --domain www.example.com --deploy-hook ssh
~~~
Les commandes sont à exécuter une seule fois à la mise en œuvre d'un certificat. Acme.sh se souvient des actions et les exécute toutes à nouveau lors des renouvelements, grace à la persistence de la configuration dans `/etc/acme.sh/www.example.com/www.example.com.conf`.
Les commandes sont à exécuter une seule fois à la mise en œuvre dun certificat. Acme.sh se souvient des actions et les exécute toutes à nouveau lors des renouvelements, grace à la persistence de la configuration dans `/etc/acme.sh/www.example.com/www.example.com.conf`.
## Renouvellement dun certificat