Certbot et l'erreur The key authorization file from the server did not match this challenge
Aujourd'hui, je souhaite activer du SSL sur un site internet via Certbot et Let's Encrypt. Comme d'habitude, je lance ma petite commande, sauf que le résultat obtenu n'est pas celui espéré.
Failed authorization procedure. xxxxxxxxxx.xxx (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: The key authorization file from the server did not match this challenge
En général, cette erreur survient lors d'un changement de serveur pour un domaine, et que la propagation des DNS n'est pas encore active. D'ailleurs, la fin du message le dit bien
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address.
J'attends donc la fin du TTL défini à une heure pour ce domaine, et je relance la commande. Surprise, le résultat est strictement le même. J'attends donc une heure de plus, afin de m'assurer que la propagation est bien effective, malheureusement toujours avec le même soucis. A force d'essayer, je finis même par être rejeté par Let's Encrypt avec l'erreur
Too many failed authorizations recently
Je me lance donc dans la décortication des logs ... Tout à la fin du json correspondant à la demande, je vois une valeur addressesResolved qui est une liste qui contient une adresse IPv4 correspondant bien à l'adresse du serveur et une adresse IPv6. Mais plus important, je vois dessous que la valeur addressUsed correspond à l'adresse IPv6 et pas du tout à l'adresse IPv4 du serveur.
Et en effet, dans la configuration DNS du domaine traînait un champs AAAA avec cette adresse IPv6, qui, une fois supprimée (ou mise à jour) a permis d'activer le SSL sur le domaine.
Avec ce délai de propagation des DNS, nous avons toujours tendance à attendre, mais parfois, quand il s'agit d'une mauvaise configuration, nous pouvons attendre pour rien. Il est donc recommandé de re-vérifier les réglages afin d'éviter de perdre du temps pour rien.