[RESOLU] Accès impossible en http pour let's encypt. pb redirection?

Bonjour,

J’aimerais avoir votre aide concernant un problème lié un accès http à mon site yunohost.

Je m’explique, quand j’essaie de renouveler ou installer un certificat let’s encrypt, j’ai le message suivant

root@mondomaine:~# yunohost domain cert-renew mondomaine.fr
Attention : Expiration du délai lors de la tentative du serveur de se contacter via HTTP en utilisant son adresse IP publique (domaine mondomaine.fr avec l’IP IP_SRV). Vous rencontrez peut-être un problème d’hairpinning ou alors le pare-feu/routeur en amont de votre serveur est mal configuré.
Attention : Expiration du délai lors de la tentative du serveur de se contacter via HTTP en utilisant son adresse IP publique (domaine mondomaine.fr avec l’IP IP_SRV). Vous rencontrez peut-être un problème d’hairpinning ou alors le pare-feu/routeur en amont de votre serveur est mal configuré.
Erreur : Certificate renewing for mondomaine.fr failed !
Erreur : Traceback (most recent call last):
  File "/usr/lib/moulinette/yunohost/certificate.py", line 380, in certificate_renew
    _check_domain_is_ready_for_ACME(domain)
  File "/usr/lib/moulinette/yunohost/certificate.py", line 822, in _check_domain_is_ready_for_ACME
    'certmanager_domain_http_not_working', domain=domain))
MoulinetteError: [Errno 22] Il semble que le domaine mondomaine.fr n’est pas accessible via HTTP. Veuillez vérifier que vos configuration DNS et nginx sont correctes

Or je pense que mes conf DNS sont bonnes :

@ 10800 IN A 192.99.xxx.xxx
@ 10800 IN AAAA xxxx:xxxx:xxxx:xxxx::1
@ 10800 IN MX 10 spool.mail.gandi.net.
@ 10800 IN MX 50 fb.mail.gandi.net.
@ 10800 IN SOA ns1.gandi.net. hostmaster.gandi.net. 1509211470 10800 3600 604800 10800
_xmpp-client._tcp 1800 IN SRV 0 5 5222 mondomaine.tld.
_xmpp-server._tcp 1800 IN SRV 0 5 5269 mondomaine.tld.
imap 10800 IN CNAME access.mail.gandi.net.
pop 10800 IN CNAME access.mail.gandi.net.
smtp 10800 IN CNAME relay.mail.gandi.net.

Je souhaite que ce soit gandi qui continu à gérer mes courriels. C’est pourquoi je n’ai rien modifié tout ce qui concerne ces derniers ( imap,pop, smtp, MX).

Donc le problème doit réellement venir de l’accès http en lui-même.

Petite (?) précision à ce sujet, mon yunohost est dans une vm qui ce situe derrière une vm PFSense. Ces vm sont hébergées sur un srv que je loue chez un hebergeur.

Donc en gros j’ai ca :

schéma de la conf réseau du proxmox
               +------------------------------------------------------------------------+
               |                                                                        |
               |                                                                        |
               |                                                                        |
               |                           +---------+                                  |
               |                           |         |                                  |
               |                      +----+  autre VM                                  |
 mondomaine.tld|                      |    |         |                                  |
 192.99.XXX.XXX|                      |    +---------+                                  |
               |    +---------+       |                                                 |
               |    |         |       |                                                 |
               +----+         +-------+                                                 |
               |    | PFSense |       |                                                 |
               |    |         |       |                                                 |
               |    +---------+       |   +-----------+                                 |
               |   192.168.2.1        |   | yunohost  |                                 |
               |                      |   |           |                                 |
               |                      +---+           |                                 |
               |                          |           |                                 |
               |                          +-----------+                                 |
               |                      192.168.2.2                                       |
               +------------------------------------------------------------------------+

Toutes les connections HTT(S) sont redirigés vers ma vm yunohots par nat et avec les règles d’accès adéquates.

Mes investigations me rendent perplexe, en effet quand j’execute la commande suivante (http = crul amélioré, le pacquet se nomme httpie ) http mondomaine.tld ou http mondomaine.tld/.well-known/acme-challenge sur ma machine j’ai :

> $ http mondomaine.tld                                                                                                                                                                                           
HTTP/1.1 302 Moved Temporarily
Connection: keep-alive
Content-Length: 154
Content-Type: text/html
Date: Sun, 10 Dec 2017 17:22:09 GMT
Location: https://modomaine.tld/yunohost/sso/?r=qsdqsdqsdqsdqsdqdq==
Server: nginx
X-SSO-WAT: You've just been SSOed

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

ou directement sur ma VM en remplacant mondomaine.tld par 127.0.0.1, j’ai :

root@mondomaine:~# http 127.0.0.1/
HTTP/1.1 302 Moved Temporarily
Connection: keep-alive
Content-Length: 154
Content-Type: text/html
Date: Sun, 10 Dec 2017 17:43:24 GMT
Location: https://127.0.0.1/yunohost/admin
Server: nginx
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

:confused:
302, c’est une redirection ca… il devrait pas en avoir sur modomaine.tld/.well-known/acme-challenge justement ?

merci beaucoup par avance pour votre aide.

Hm alors, je pense que c’est très probablement lié au reverse proxy :sweat_smile: (le yunohost derrière le PFsense)(pas sur de savoir ce qu’est PF sense mais peu importe)

Sinon pour réellement débugger le .well-known, il faut créer un fichier dans le dossier /tmp/acme-challenge-public (par exemple toto) puis tenter d’accéder à http://ton.domaine.tld/.well-known/acme-challenge/toto

Attention : il faut forcément passer par le nom de domaine (sinon tu seras redirigé vers l’admin) et que le fichier existe (sinon tu seras redirigé vers le SSO)

Salut,

Merci pour la réponse.
Je regarderai ca plus en détails plus tard, mais je viens de me rendre compte que le dossier /tmp/acme-challenge-public/ n’existe pas sur mon srv (1), du coups je l’ai créé, j’ai ajouté un toto et j’arrive à y accéder via un navigateur. Cependant, l’installation du certificat ne fonctionne toujours pas.

J’ai lancé le script acme_tiny.py avant de voir que théoriquement le pb était déjà corigé (version à jour). Le pb viendrait pas de là par hasard? :expressionless:

PFSense : c’est juste le SE d’un routeur. Là je m’en sers pour gérer la partie réseaux (création du réseaux, règle de firewall et le NAT.) (le port 80 de mon srv est nat sur le 80 de la vm yunohost et pour le 443 c’est sur le 443 de la VM.)

(1) (j’aurais pu le voir plus tot…)

Non, j’ai pas l’impression que ce soit le meme probleme que celui corrigé dans la 2.7.5 :wink:

Sinon en fait, si tu arrives bien à tester que ca marche, il suffit peut-être d’ajouter l’option --no-checks à la ligne de commande d’installation/renew du certificat… (Des fois l’auto-diagnostique se gourre et pense à tort que le port 80 n’est pas accessible publiquement, pour diverses raisons)

rhaa pinaise je comprend pas.

  • ajouter l’option de change rien, j’ai toujours le même problème. Cepandant avec un message d’erreure différent :
Attention : Expiration du délai lors de la tentative du serveur de se contacter via HTTP en utilisant son adresse IP publique (domaine mondomaine.tld avec l’IP 192.99.10.208). Vous rencontrez peut-être un problème d’hairpinning ou alors le pare-feu/routeur en amont de votre serveur est mal configuré.
Erreur : Wrote file to
/tmp/acme-challenge-public/ghvmCOYNcQsZ-jbF5C-LUMT-UNIlibybublhujbuylhjn, but
couldn't download
http://mondomaine.tld/.well-known/acme-challenge/ghvmCOYNqsdcQsZ-jqsdqsbF5Ca-LUMgddfsT-qhyeaicuygfiauzegycfnaieuzgyncaizueygfcnaizuegfycnazie
Erreur : Certificate installation for mondomaine.tld failed !
Exception: [Errno 22] La signature du nouveau certificat a échoué

  • mais le pire, c’est que quand je lance la commande pour installer le certificat :
    yunohost domain cert-install mondomaine.tld --no-checks
    J’arrive à accéder au fichier qu’il est mentionné… :rage:

Hm c’est bizarre :confused:

Et quand tu testes d’accèder à http://mondomaine.tld/.well-known/acme-challenge/toto, tu le fais bien depuis l’extérieur ? (genre ton ordinateur perso)

Et sur cet ordinateur, tu n’as pas de /etc/hosts pointant vers le domaine ? (Juste pour être sur que c’est pas un problème de DNS…)

ha ca pour être bizarre …

Oui je teste depuis mon pc perso.

Et c’est pas un pb de dns, un dig mondomaine.tld @srv_dns_externe me répond bien l’ip de mon srv.

re, j’arrive toujours pas à trouver d’où peux venir ce pb…

cependant je remarque que quand je test depuis mon pc la commande suivante cela fonctionne :

curl http://mondomaine.fr/.well-known/acme-challenge/test.txt
Alors que quand je le fais en local (sur le serveur yunohost), je ne peux accéder au fichier test …

Bonsoir,

J’ai vérifié les fichiers de configurations par rapport à une installation vierge et j’ai modifier les changement que j’avais effectué pour avoir A+ au ssllab. (j’ai suivi le tuto de Genma)

J’obtiens à nouveau le premier message d’erreur. J’en ai profité pour executer la commande avec l’option --verbose:

Attention : Expiration du délai lors de la tentative du serveur de se contacter via HTTP en utilisant son adresse IP publique (domaine charbowicz.fr avec l’IP 192.99.10.208). Vous rencontrez peut-être un problème d’hairpinning ou alors le pare-feu/routeur en amont de votre serveur est mal configuré.
Now attempting install of certificate for domain charbowicz.fr!
Nginx configuration file for ACME challenge already exists for domain, skipping.
Prepare key and certificate signing request (CSR) for charbowicz.fr...
Saving to /tmp/acme-challenge-private/charbowicz.fr.csr.
Now using ACME Tiny to sign the certificate...
Parsing account key...
Parsing CSR...
Registering account...
Already registered!
Verifying charbowicz.fr...
Erreur : charbowicz.fr challenge did not pass: {u'status': u'invalid', u'validationRecord': [{u'addressesResolved': [u'192.99.10.208', u'2607:5300:60:3bd0::1'], u'url': u'http://charbowicz.fr/.well-known/acme-challenge/tNPwIo403Yin93_to1wn4A6p3Y3MZ8xq4F4-5Huippw', u'hostname': u'charbowicz.fr', u'addressesTried': [], u'addressUsed': u'2607:5300:60:3bd0::1', u'port': u'80'}], u'keyAuthorization': u'tNPwIo403Yin93_to1wn4A6p3Y3MZ8xq4F4-5Huippw.z2MCu5jo-sQrj45AF0qaXsc94Jpe_5b59rY7GgYhOVg', u'uri': u'https://acme-v01.api.letsencrypt.org/acme/challenge/M1bC2dVRWBNtYNIR1akA1roxtcHq0U6-fjNF4lUDxAM/2821623469', u'token': u'tNPwIo403Yin93_to1wn4A6p3Y3MZ8xq4F4-5Huippw', u'error': {u'status': 400, u'type': u'urn:acme:error:connection', u'detail': u'Fetching http://charbowicz.fr/.well-known/acme-challenge/tNPwIo403Yin93_to1wn4A6p3Y3MZ8xq4F4-5Huippw: Timeout'}, u'type': u'http-01'}
Erreur : Certificate installation for charbowicz.fr failed !
Exception: [Errno 22] La signature du nouveau certificat a échoué

Je laisse mon nom de domaine, si cela peut aider à débuger…
Si vous avez des idées, je suis preneur…
Merci par avance.

Salut,

visiblement Let’s Encrypt tente d’utiliser l’IPv6 enregistré dans le DNS pour accéder à ton serveur (2607:5300:60:3bd0::1). Est-ce que si sur ton serveur tu executes curl ip6.yunohost.org, tu vois la même IP ? Sinon il faut probablement mettre à jour ton enregistre AAAA dans le DNS …

1 Like

re

Ca fonctionne.
C’était bien un problème d’IPv6… : J’ai désactivé le trafic IPv6 sur mon hyperviseur et ce que je ne savais pas c’est que let’s Encrypt test en priorité l’IPv6 mais ne repasse pas automatiquement en IPv4 si ca ne fonctionne pas.

Donc forcément …

Merci.

1 Like