MAJ Let's Encrypt étonnante

Mon serveur YunoHost

Matériel: Raspberry Pi à la maison
Version de YunoHost: 3.4.2
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : non
domain : .noho.st
FAI : Orange / Livebox

Description du problème

Mon certificat Let’s Encrypt est arrivé à expiration aujourd’hui.
J’ai voulu le renouveler, mais en arrivant sur l’interface d’administration j’avais le message suivant : “Expiration du délai lors de la tentative du serveur de se contacter via HTTP en utilisant son adresse IP publique (domaine xxxx avec l’IP xxx). Vous rencontrez peut-être un problème d’hairpinning ou alors le pare-feu/routeur en amont de votre serveur est mal configuré.”

J’ai cherché un peu partout sur la doc et le forum, j’ai trouvé quelques commandes / infos mais rien de probant.

Au final j’ai réussi à mettre à jour le certificat, mais j’ai toujours le message d’erreur sur l’interface d’admin, et surtout, je ne comprends pas pourquoi ça a marché.

Pour info j’ai d’abord essayé

sudo yunohost domain cert-install xxxx

Résutlat

DEBUG Starting new HTTPS connection (1): ip.yunohost.org
DEBUG https://ip.yunohost.org:443 "GET / HTTP/1.1" 200 14
DEBUG Starting new HTTP connection (1): xxxx
WARNING Timed out when server tried to contact itself through HTTP using public IP address (domain xxxx with ip xxxxx). You may be experiencing hairpinning issue or the firewall/router ahead of your server is misconfigured.

Ensuite j’ai vu que cette commande pouvait peut-être débloquer la partie accès HTTP

sudo yunohost service regen-conf dnsmasq

Commande OK, mais toujours impossible de mettre à jour le certificat.
Ensuite, je me suis aperçu en regardant dans un thread que je n’avais pas ce répertoire et je l’ai donc créé :

/tmp/acme-challenge-public

Puis j’ai tenté un

sudo yunohost domain cert-renew

qui s’est soldé par

Warning: Timed out when server tried to contact itself through HTTP using public IP address (domain xxxx with ip xxxxx). You may be experiencing hairpinning issue or the firewall/router ahead of your server is misconfigured.
Error: Certificate renewing for xxxxx failed !
Error: Traceback (most recent call last):
  File "/usr/lib/moulinette/yunohost/certificate.py", line 379, in certificate_renew
    _check_domain_is_ready_for_ACME(domain)
  File "/usr/lib/moulinette/yunohost/certificate.py", line 837, in _check_domain_is_ready_for_ACME
    raise YunohostError('certmanager_domain_http_not_working', domain=domain)
YunohostError: It seems that the domain xxxxxx cannot be accessed through HTTP. Please check your DNS and nginx configuration is okay

J’ai reessayé avec cette fois le nom de domain suivi de --no-check et là ça marché :

DEBUG Starting new HTTPS connection (1): ip.yunohost.org
DEBUG https://ip.yunohost.org:443 "GET / HTTP/1.1" 200 14
DEBUG Starting new HTTP connection (1): xxxxx
DEBUG http://xxxxx:80 "HEAD / HTTP/1.1" 302 0
SUCCESS Successfully renewed Let's Encrypt certificate for domain xxxxx !

J’ai essayé de check toutes les configs possibles, Nginx semble bien configuré (jamais touché), mes ports sont ouverts sur ma box, et le site de checking https://ports.yunohost.org/ indique bien que mes ports sont ouverts.
J’arrive à accéder depuis l’exterieur à mon serveur (interface user / admin + appli), en local aussi. Toutefois, en local, il ne reconnait pas le certif visiblement.

Merci d’avance si vous avez des réponses, et en espérant que mes tentatives puissent servir à certains :slight_smile:

Le hairpinning présente sur les box Orange empêche de pouvoir vérifier que le serveur est correctement accessible depuis l’extérieur … donc au final il n’y a pas grand chose à faire si ce n’est d’utiliser l’option --no-checks (ou aller râler chez Orange pour qu’ils arrêtent d’etre relou avec leur “Internet par Orange” qui est super naze -.-)

J’ai oublié de dire qu’avant que ça ne fonctionne, j’avais aussi modifié le fichier /etc/hosts pour ajouter le nom de domaine sur le localhost comme précisé à la fin de cette page : https://yunohost.org/#/certificate_fr

Bref, merci Aleks, je n’avais pas bien saisi l’utilité du --no-checks :slight_smile:

1 Like