[Résolu] Errno 22 au renouvellement du certificat LE (cause chgmt IP !)

Bonjour,

Je rencontre pour la première fois l’erreur suivante lors du renouvellement automatique du certificat LE :

~$ su -c ‘yunohost domain cert-renew --debug’
Mot de passe :
73 DEBUG loading actions map namespace ‘yunohost’
91 DEBUG extra parameter classes loaded: [‘ask’, ‘password’, ‘required’, ‘pattern’]
91 DEBUG initializing base actions map parser for cli
93 DEBUG registering new callback action ‘yunohost.utils.packages.ynh_packages_version’ to [’-v’, ‘–version’]
171 DEBUG initialize authenticator ‘ldap-anonymous’ with: uri=‘ldap://localhost:389’, base_dn=‘dc=yunohost,dc=org’, user_rdn=‘None’
173 DEBUG lock has been acquired
959 INFO processing action [13891.1]: yunohost.domain.cert-renew with args={‘no_checks’: False, ‘force’: False, ‘domain_list’: [], ‘auth’: <moulinette.authenticators.ldap.Authenticator object at 0x7fa1602c8510>, ‘staging’: False, ‘email’: False}
1209 INFO Starting new HTTP connection (1): 90.92.240.51
11220 WARNING Expiration du délai lors de la tentative du serveur de se contacter via HTTP en utilisant son adresse IP publique (domaine yoda.nohost.me avec l’IP 90.92.240.51). Vous rencontrez peut-être un problème d’hairpinning ou alors le pare-feu/routeur en amont de votre serveur est mal configuré.
11220 INFO Now attempting renewing of certificate for domain yoda.nohost.me !
11296 INFO Starting new HTTP connection (1): 90.92.240.51
21307 WARNING Expiration du délai lors de la tentative du serveur de se contacter via HTTP en utilisant son adresse IP publique (domaine yoda.nohost.me avec l’IP 90.92.240.51). Vous rencontrez peut-être un problème d’hairpinning ou alors le pare-feu/routeur en amont de votre serveur est mal configuré.
21308 ERROR Certificate renewing for yoda.nohost.me failed !
21308 ERROR 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 yoda.nohost.me n’est pas accessible via HTTP. Veuillez vérifier que vos configuration DNS et nginx sont correctes

21309 ERROR [Errno 22] Il semble que le domaine yoda.nohost.me n’est pas accessible via HTTP. Veuillez vérifier que vos configuration DNS et nginx sont correctes
21309 DEBUG action [13891.1] ended after 20.349s
21309 DEBUG lock has been released

Il y a une erreur sur l’accès HTTP, mais impossible de trouver à quel niveau (sur la box, les ports 80/443 sont bien ouverts, … ).
J’ai pas mal cherché sur le forum, mais je n’ai pas trouvé de solution à mon problème. Alors je remets en cause la config de la box, mais là je sèche !
Si quelqu’un a une idée…

Merci par avance pour votre aide :slight_smile:

Bonjour @Sango ,

Il semble y avoir une erreur n° 22.
Il y a quelques posts sur le forum dont une des solutions a été de renouveler le certificat manuellement par la commande :

yunohost domain cert-renew --no-checks

Sources :

https://forum.yunohost.org/search?context=topic&context_id=3544&q=renew%20--no-check&skip_context=true

ppr

Tout d’abord merci pour ta réponse mais j’ai déjà tenté et voici ce que j’obtiens :
~$ su -c ‘yunohost domain cert-renew --no-checks’
Mot de passe :
Succès ! La configuration a été mise à jour pour le service « dnsmasq »
Attention : Failed to open /dev/tty: Aucun périphérique ou adresse
Erreur : yoda.nohost.me challenge did not pass: {u’status’: u’invalid’, u’validationRecord’: [{u’addressesResolved’: [u’90.92.240.51’, u’2a01:cb04:93e:f100:2fd:45ff:fefc:53a0’], u’url’: u’http://yoda.nohost.me/.well-known/acme-challenge/cTqpEkYyjuU_za1rv8nRtbAFKgt0Ku0IKSyXURgC0rA’, u’hostname’: u’yoda.nohost.me’, u’addressesTried’: , u’addressUsed’: u’2a01:cb04:93e:f100:2fd:45ff:fefc:53a0’, u’port’: u’80’}], u’keyAuthorization’: u’cTqpEkYyjuU_za1rv8nRtbAFKgt0Ku0IKSyXURgC0rA.OljOyjSctl4ap_EuDKq8gWVLDUYKtsBGh0k4iM5TRjU’, u’uri’: u’https://acme-v01.api.letsencrypt.org/acme/challenge/5crPR6aokXscVoB1QkPti69Sb1HNBXtniUtFA58Px8I/2053371634’, u’token’: u’cTqpEkYyjuU_za1rv8nRtbAFKgt0Ku0IKSyXURgC0rA’, u’error’: {u’status’: 400, u’type’: u’urn:acme:error:connection’, u’detail’: u’Fetching http://yoda.nohost.me/.well-known/acme-challenge/cTqpEkYyjuU_za1rv8nRtbAFKgt0Ku0IKSyXURgC0rA: Timeout’}, u’type’: u’http-01’}
Erreur : Certificate renewing for yoda.nohost.me failed !
Erreur : Traceback (most recent call last):
File “/usr/lib/moulinette/yunohost/certificate.py”, line 382, in certificate_renew
_fetch_and_enable_new_certificate(domain, staging)
File “/usr/lib/moulinette/yunohost/certificate.py”, line 567, in _fetch_and_enable_new_certificate
‘certmanager_cert_signing_failed’))
MoulinetteError: [Errno 22] La signature du nouveau certificat a échoué

Erreur : [Errno 22] La signature du nouveau certificat a échoué

@Sango ,

Tu peux essayer ça avant de retenter la commande :

yunohost dyndns update -d yoda.nohost.me
yunohost domain cert-renew --no-checks

ppr

Info complémentaire : Orange a changé mon IP (j’était en IP fixe…), du coup, cela a dû influer…
J’essai ta méthode de suite !

@Sango ,

Sinon il y a aussi ça que tu peux tenter :

yunohost service regen-conf dnsmasq

(éventuellement avec --force après)

Source :

ppr

Grand merci à toi : mon souci est bien résolu, et voici comment !

Problème rencontré : Orange a brutallement, et sans avertissement changer mon IP fixe (j’ai un compte pro fibre avec IP fixe), ce qui a renvoyé une erreur ce matin au renouvellement auto de mon certificat LE.

Solution qui a fonctionné pour moi :

  • retour au certificat autosigné
  • puis mise à jour de dyndns via la commande : yunohost dyndns update -d yoda.nohost.me
  • petite vérification préalable : yunohost domain cert-status yoda.nohost.me
  • [pour info, la commande “yunohost domain cert-install yoda.nohost.me” n’est pas passée de suite mais proposait d’y ajouter --no-checks]
  • donc : ~$ su -c ‘yunohost domain cert-install yoda.nohost.me --no-checks’ qui a retourné “Succès ! Installation avec succès d’un certificat Let’s Encrypt pour le domaine yoda.nohost.me !”

Merci encore ppr pour ta réactivité dominicale matinale :wink:

[Edit > post mis en résolu avec modif du titre pour que ce soit plus clair]

Bonjour,

J’ai exactement le même message d’erreur qui m’arrive sur les ma boite mail en nohost.me.

[Errno 22] Signing the new certificate failed

Et dans l’interface graphique d’administration de yunuhost, j’ai aussi un message d’erreur sur la page certificat (domaine -> nomdomaine -> certificat SSL -> état du certificat):

Critique : le certificat actuel est invalide ! Le HTTPS ne fonctionnera pas du tout !
Autorité de certification
Let's Encrypt (Let's Encrypt Authority X3)
Validité    0 days 

Pourtant, je viens de vérifier avec un téléphone portable, la page de mon serveur yunohost s’affiche correctement en https.

J’ai essayé les commandes:

yunohost service regen-conf dnsmasq
dyndns update -d nomdusiteen.nohost.me
yunohost domain cert-renew
yunohost domain cert-renew --no-checks

Mais cela fini par retourner le message d’erreur

Error: nomdusiteen.nohost.me challenge did not pass: {u'status': u'invalid',   
u'validationRecord': [{u'addressesResolved': [u'86.19
.../... je tronçonne ici .../...
MoulinetteError: [Errno 22] Signing the new certificate failed
Error: [Errno 22] Signing the new certificate failed

Qu’en déduire, si le site en https est tout de même accessible sans message d’alerte, mais que le message d’erreur persiste ?

Me faut-il moi aussi passer par un certificat autosigné ? ce serait un peu dommage non ?

Je dois être arrivé aux 90 jours avant renouvellement. Et le renouvellement automatique, ne s’est donc pas réalisé correctement.

Bonjour @AntoineC ,

Peut-être que ceci …

… explique cela … voir avec un membre de l’équipe de dev’ YunoHost pour confirmer ou pas.

ppr

Est-ce que tu as moyen de fournir le message d’erreur / debug en entier ?

Voici:

sudo yunohost domain cert-renew  --no-checks
Success! The configuration has been updated for service 'dnsmasq'
Error: lenomdusiten.nohost.me challenge did not pass: {u'status': u'invalid', u'validationRecord':
[{u'addressesResolved': [u'86.196.101.71', u'2a01:cb00:8080:eb00:312e:b5bc:828c:c2ad'], u'url': u'http:// 
lenomdusiten.nohost.me/.well-known/acme-challenge/EdLgcSdFU8tENX2XvU-s70lV6o5VLQnDp1z1uqMCwRw', 
u'hostname': u'lenomdusiten.nohost.me', u'addressesTried': [], u'addressUsed': 
u'2a01:cb00:8080:eb00:312e:b5bc:828c:c2ad', u'port': u'80'}], u'keyAuthorization': u'EdLgcSdFU8tENX2XvU-
s70lV6o5VLQnDp1z1uqMCwRw.Q64Tc56zh-OHLzLKNK1r83-7xkNzK6CP3wDyR95f_K8', u'uri': u'https://acme-
v01.api.letsencrypt.org/acme/challenge/j5_3ltHmpHmXEv6PbSRhSUWfyk2KlR_HA7BCod75aFI/2062595913', u'token': 
u'EdLgcSdFU8tENX2XvU-s70lV6o5VLQnDp1z1uqMCwRw', u'error': {u'status': 400, u'type': 
u'urn:acme:error:connection', u'detail': u'Fetching http://lenomdusiten.nohost.me/.well-known/acme-
challenge/EdLgcSdFU8tENX2XvU-s70lV6o5VLQnDp1z1uqMCwRw: Timeout'}, u'type': u'http-01'}

Error: Certificate renewing for lenomdusiten.nohost.me failed !
Error: Traceback (most recent call last):
 File "/usr/lib/moulinette/yunohost/certificate.py", line 382, in certificate_renew
  _fetch_and_enable_new_certificate(domain, staging)
 File "/usr/lib/moulinette/yunohost/certificate.py", line 567, in _fetch_and_enable_new_certificate
    'certmanager_cert_signing_failed'))
MoulinetteError: [Errno 22] Signing the new certificate failed

Error: [Errno 22] Signing the new certificate failed

Arf, bon du coup le soucis viens qu’il essaye de signer le certif (ACME challenge toussa) via l’IP v6, qui apriori ne fonctionne pas…

Malheureusement pour le moment j’ai pas de solution magique à ce probleme :confused:

Que renvoie un curl ip6.yunohost.org ?

Cela retourne ceci

2a01:cb00:8080:eb00:312e:b5bc:828c:c2ad

Yo. On a trouvé une soluc’. le site est de nouveau fonctionnel. Le certificat est de nouveau opérationnel.

Première étape: désactiver l’IP6

Comme le dit @Aleks, le problème vient d’IP6. Donc, la solution consiste à désactiver IP6.

Me concernant, le site est sur une raspberry pi 3 connectée à une box orange (personnelle, pas pro). J’ai donc cherché à désactivité l’IP6 dans l’interface d’administration de la box orange. Cela se trouve dans paramètres avancés, et IP6. Il y a un bouton désactiver de couleur … orange (sisi, véridique). On clique, ça désactive.

puis, solution, si vous n’avez pas généré de certificat autosigné:
Ensuite, il suffit de saisir, après s’être connecté en ssh via un terminal sur la raspberry pi, la ligne de commande:

yunohost domain cert-renew --no-checks

Et le tour est joué. Tout refonctionne.

ou, solution si vous avez généré un certificat auto-signé
Pour les andouilles comme moi, qui ont généré un certificat autosigné entre temps pour essayer de solutionner, alors, la ligne de terminal ci-dessus ne suffit pas. En effet, avec ce certificat auto-signé, ça s’embrouille tout et le certificat letsencrypt n’est pas remis en place.

Pour que cela fonctionne, voici, ce que j’ai fait:

  1. si possible dans un autre navigateur, aller sur la page du site
  2. puis accepter l’alerte de sécurité pour certificat non-valide
  3. on arrive sur la mire de connexion au site, se connecter, puis aller dans l’interface d’adminstration
  4. puis domaine, nom de domaine, et gérer les certificats
  5. là, la page indique qu’on est sous un certificat autosigné; Il suffit de cliquer sur générer un certicat letsencrypt pour que le processus se lance et retourne au bout de quelques secondes le message libérateur “Installation avec succès d’un certificat Let’s Encrypt pour le domaine”

et là, c’est la victoire.

Merci @Aleks