Let's encrypt : problème de renouvellement suite à erreur lors de la création

Salut,

Lorsque j’ai créé mes certificats, j’ai mis tout d’abord de mauvaises options. J’ai alors relancé la création, et mes certificats fonctionnaient :smile:

Mais maintenant qu’il faut que je les renouvelle, je m’aperçois qu’en fait, ça m’a créé un certificat mondomaine.com-0001 en plus du premier, mondomaine.com ! Et évidemmment, il trouve un problème sur le port 80, qui ne répond bien sûr pas à mondomaine.com-0001 ! Pourtant, c’était bien ce dernier qui était utilisé avec succès par nginx…

J’ai tenté de faire du ménage en remplaçant mondomaine.com-0001 par mondomaine.com, mais il y a des adressages un peu partout de mondomaine.com-0001…

Y a-t-il un moyen de remettre tout ça d’aplomb, ou faut-il que je recrée des certificats proprement ? Et dans ce second cas, comment effacer toute trace des premiers pour ne pas me retrouver avec mondomaine.com-0002 :grimacing: ?

Je précise que j’ai plusieurs certificats, chacun correspondants à plusieurs services (ex : smtp.mondomaine.com, imap.mondomaine.com et webmail.mondomaine.com pour le mail, mondomaine.com et www.mondomaine.com pour le serveur web etc.) et que seul le certificat “principal” (celui pour le web) présente ce problème.

Petites précisions :

  • J’utilise certbot
  • Pour supprimer les certificats, la solution est bien sûr ici, mais je crains que ça ait des difficultés à tout bien nettoyer, ou que ça refuse de fonctionner pour mondomaine.com-0001 comme pour le renouvellement… Auquel cas, il me faudra une autre solution !

Si ce domaine est accessible en HTTP, alors, tu pourras les révoquer, puis si vraiment il reste des fichiers correspondants - ce qui ne devrait pas être le cas - , sur ton FS, tu pourras les supprimer.
Sinon, il te faut tout simplement les supprimer.

Le plus simple serait probablement d’essayer, mais comme il me reste quelques jours de validité, je préfère m’assurer de ne pas risquer de tout foutre en rade et de passer des heures à ré-obtenir des certificats exploitables.

En effet, la tentative de renouvellement signale, pour mondomaine.com-0001 :
Problem binding to port 80: Could not bind to IPv4 or IPv6.. Skipping.
ce qui me semble normal, puisque nginx traite mondomaine.com et pas mondomaine.com-001 (mais il appelle bien le certificat de mondomaine.com-0001 :nauseated_face:)

Donc, il y a de fortes chances que je n’arrive pas à révoquer celui-ci, quant à mondomaine.com, il me signale plusieurs fichiers erronés dans /opt/eff.org/certbot/venv/local/lib/python2.7/site-packages/certbot/ (apparemment, des scripts python qui servent au renouvellement).

Donc, quand tu parles de les supprimer, j’ai peur qu’il reste des traces quelque part : il me semble d’ailleurs que j’avais supprimé (mais c’est vrai, pas révoqué) toute trace “visible” de mondomaine.com quand j’ai foiré ma première demande, et que c’est là que ça m’a créé ce mondomaine.com-0001. J’ai un peu peur que ça refasse pareil…

Bonjour,

Si tu recréés un certificat avec certbot pour mondomaine.com sans préciser le nom du certificat (option –cert-name), celui-ci n’écrase pas les certificats précédents mais en créé un nouveau en nommant les fichiers mondomaine.com-001
Il s’agit des noms de fichiers ou dossiers sous /etc/letsencrypt et non du nom de domaine.

Si tu veux faire le ménage il faut supprimer tout ce qui concerne mondomaine.com dans l’arborescence /etc/letsencrypt

Par ailleurs je t’invite à utiliser les dépôts officiels pour installer certbot, conformément à la documentation de https://certbot.eff.org

1 J'aime

Bonsoir,

Merci de ta réponse.

Donc, si j’ai bien compris, je peux sans gros problème garder tous les fichiers mondomaine.com-0001 et simplement supprimer tous ceux nommés mondomaine.com. Par contre, si ce n’est pas à cause du nom en 0001, à quoi est due l’erreur
Problem binding to port 80: Could not bind to IPv4 or IPv6.. Skipping.
lors du renouvellement ?

Tu conserves ceux que tu utilises dans ta configuration de serveur, et qui correspondent à un certificat correct.
Pour l’erreur si tu as bien un serveur (apache, nginx, …) en écoute sur les ports 80 et 4443, elle est très certainement due à une mauvaise utilisation de certbot. Il faut indiquer les commandes passées, la configuration du service web et les logs de letsencrypt.

Salut,

Evidemment ! Mais c’est plutôt giga-kilométrique, surtout les logs ! Bon, je tente en simplifiant un max, tu me diras si ça suffit pour me mettre sur la piste ou pas…

Commande passée :
certbot renew --dry-run

configuration du service web : Elle est quasi identique pour les sites qui se renouvellent et ceux qui renvoient une erreur. Je ne pense donc pas que ça vienne de là…

logs de letsencrypt :
La principale différence que je vois entre un site qui fonctionne et un qui ne fonctionne pas est ici, pour un site non fonctionnel :
“identifier”: {
“type”: “dns”,
“value”: “mondomaine.com
},
“status”: “pending”,
“expires”: “2020-01-05T18:18:18Z”,
“challenges”: [
{
“type”: “http-01”,
“status”: “pending”,
“url”: “https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/29760107/-yxBRQ”,
“token”: “18SqtypgL07dWOyCBj3gzo3SNFxVw3V5Dtjz95BQcAk”
},
{
“type”: “dns-01”,
“status”: “pending”,
“url”: “https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/29760107/lQUrGw”,
“token”: “18SqtypgL07dWOyCBj3gzo3SNFxVw3V5Dtjz95BQcAk”
},
{
“type”: “tls-alpn-01”,
“status”: “pending”,
“url”: “https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/29760107/KIiJyA”,
“token”: “18SqtypgL07dWOyCBj3gzo3SNFxVw3V5Dtjz95BQcAk”
}
]


et pour un site fonctionnel :

“identifier”: {
“type”: “dns”,
“value”: “autre.mondomaine.com
},
“status”: “valid”,
“expires”: “2020-02-04T18:18:26Z”,
“challenges”: [
{
“type”: “http-01”,
“status”: “valid”,
“url”: “https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/29760136/kdatbA”,
“token”: “q684HD3ZO2PcsoRJSYKgUChJezc68524jMnlv74LnXg”,
“validationRecord”: [
{
“url”: “http://autre.mondomaine.com/.well-known/acme-challenge/q684HD3ZO2PcsoRJSYKgUChJezc68524jMnlv74LnXg”,
“hostname”: “autre.mondomaine.com”,
“port”: “80”,
“addressesResolved”: [
“78.218.30.12”
],
“addressUsed”: “78.xxx.xxx.12”
}
]
}
]

(désolé, je n’ai toujours pas trouvé comment mettre proprement du code dans ce forum… Ça fonctionne quand ça veut…)

Je ne comprends pas pourquoi l’un a un status “valid” et l’autre un status “pending”, alors que tous sont bien accessibles et que je ne vois pas de différence, que ce soit dans la config ou dans la demande de certificat (sauf pour celui refait, mais qui a finalement été refait comme les autres)… Y a-t-il un endroit plus particulier où concentrer mon attention ?

Ce qu’il faut nous montrer c’est la commande passée pour générer tes certificats, pas la commande de renouvellement.
Sinon tu peux montrer le(s) fichier(s) de configuration qui est sous /etc/letsencrypt/renewal

Si tu ne t’en sort pas le plus simple est des supprimer, puis de refaire ton certificat.

Oui, c’est le plus simple ! Mais j’aime bien comprendre, alors je m’obstine un peu avant d’en arriver là.

Mais j’ai trouvé, en épluchant les configurations de /etc/letsencrypt/renewal/ : le premier certificat, celui qui ne passait pas, n’avait pas le pre/post hook qui stoppe et redémarre nginx. Une fois rajoutées ces lignes, j’ai renouvelé mes certificats avec succès :slight_smile:
Merci beaucoup pour ton aide précieuse et termine bien l’année :wink:

1 J'aime

Salut et bonne année !

Apparemment, l’ajout de la mention [RESOLU] dans le sujet ne se pratique pas sur ce forum. Merci @Clochette d’avoir remis ça en bon ordre :slight_smile:

Par contre, comment fait-on pour marquer le sujet solutionné et reporter l’extrait de solution dans le premier post ?
Et de manière plus générale, y a-t-il quelque part une aide pour l’utilisation de ce forum. Hormis les raccourcis clavier et la FAQ, je n’ai rien su trouver et il y a des tas de fonctions que je ne sais pas utiliser ou que j’utilise mal…

En cliquant sur les trois petits points à côté de Répondre sur le message apportant la réponse :wink:

1 J'aime

:flushed: effectivement, j’aurais dû y penser !

Et pour l’aide, il y a un truc aussi évident qui m’a échappé ?

discute avec @discobot :wink:

En effet, non, ce n’est pas évident !
Certaines communautés qui utilisent aussi discourse, font en sorte que @discobot soit plus interactif…

1 J'aime

Bonjour ! Pour voir ce que je peux faire, dites @discobot.

1 J'aime

Salut,

Bon… Je suis presque sûr que, comme à l’inscription, @discobot va entretenir un interminable dialogue qui n’apprend rien, mais bon, je tente quand même…