Je peux confirmer que le renouvellement letsencrypt échoue. J’utilise une installation Discourse auto-hébergée depuis des années, et très étrangement, le renouvellement a échoué deux fois de suite au cours des deux derniers mois. La deuxième fois, c’était ce matin, et j’ai donc commencé à enquêter.
J’ai identifié les deux commits suivants :
Et la ligne pertinente liée :
Il y a deux problèmes, je pense.
Premièrement, return 301 https://${DISCOURSE_HOSTNAME}$request_uri; se transforme en return 301 https://<MON NOM DE SERVEUR> sans $request_uri à la fin. J’ai vérifié sur mon installation auto-hébergée, ainsi que sur l’installation auto-hébergée d’un ami configurée la semaine dernière. Je ne comprends pas comment le modèle Discourse fonctionne, donc je ne sais pas pourquoi il est supprimé.
Deuxièmement, comme l’a mentionné @lessLost, la redirection 301 est en dehors du bloc location. Je crois qu’une redirection au niveau du serveur écrase tous les blocs location. LetsEncrypt utilise http pour les renouvellements. Cependant, toute tentative de curl -I http://VOTRE_DOMAINE/.well-known/acme-challenge/test renverra un 301 vers https, au lieu d’un 404 (ce qui est le comportement attendu ; nous voulons un 404 et non un 301).
J’ai corrigé cela manuellement sur mon installation auto-hébergée, mais je m’attends à ce que toute mise à jour écrase mes modifications. Malheureusement, je ne comprends pas assez les modèles pour soumettre une pull request @pfaffman — sinon je le ferais aussi.
Modifié pour ajouter :
Je crois que c’est une erreur —
Je suis presque certain que LetsEncrypt utilise http par défaut (pour des raisons évidentes, si le certificat est expiré, il ne peut pas se renouveler !) Mais placer le 301 au niveau du bloc server force toutes les requêtes à être redirigées en 301 vers https, ce qui est incohérent avec cette stratégie de renouvellement.