La migration 2 migrate_to_tsig_sha256 a échoué

Hello all

J’ai voulu contrôler que la mise à jour dyndns fonctionnait toujours, simple contrôle suite à la mise à jour (utilisation de HMAC-SHA512), mais qui tombe bien puisque la migration ne fonctionne pas.

Voici ce que me rapporte la commande yunohost dyndns update --debug

73   DEBUG loading actions map namespace 'yunohost'
89   DEBUG extra parameter classes loaded: ['ask', 'password', 'required', 'pattern']
89   DEBUG initializing base actions map parser for cli
90   DEBUG registering new callback action 'yunohost.utils.packages.ynh_packages_version' to ['-v', '--version']
157  DEBUG lock has been acquired
1092 INFO processing action [23361.1]: yunohost.dyndns.update with args={'domain': None, 'key': None, 'dyn_host': 'dyndns.yunohost.org', 'ipv4': None, 'ipv6': None}
1308 DEBUG cannot retrieve public IPv6
Traceback (most recent call last):
  File "/usr/lib/moulinette/yunohost/domain.py", line 273, in get_public_ip
    return urlopen(url).read().strip()
  File "/usr/lib/python2.7/urllib.py", line 87, in urlopen
    return opener.open(url)
  File "/usr/lib/python2.7/urllib.py", line 213, in open
    return getattr(self, name)(url)
  File "/usr/lib/python2.7/urllib.py", line 443, in open_https
    h.endheaders(data)
  File "/usr/lib/python2.7/httplib.py", line 1035, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python2.7/httplib.py", line 879, in _send_output
    self.send(msg)
  File "/usr/lib/python2.7/httplib.py", line 841, in send
    self.connect()
  File "/usr/lib/python2.7/httplib.py", line 1242, in connect
    HTTPConnection.connect(self)
  File "/usr/lib/python2.7/httplib.py", line 822, in connect
    self.timeout, self.source_address)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
IOError: [Errno socket error] [Errno 101] Network is unreachable
1343 DEBUG Old IPv4/v6 are (None, None)
1343 DEBUG Requested IPv4/v6 are (78.124.79.180, None)
1343 INFO Updated needed, going on...
1344 DEBUG Checking if domain domain.tld is available on dyndns.yunohost.org ...
1354 INFO Starting new HTTPS connection (1): dyndns.yunohost.org
1697 DEBUG "GET /test/domain.tld HTTP/1.1" 409 53
1709 DEBUG Chargement de la migration 2 migrate_to_tsig_sha256…
1710 WARNING L’algorithme de génération des clefs n’est pas suffisamment sécurisé pour la signature TSIG du domaine « domain.tld », lancement de la migration vers hmac-sha512 qui est plus sécurisé
dnssec-keygen: warning: dns_dnssec_findmatchingkeys: error reading key file Kdomain.tld.+157+15053.private: bad key type
Kdomain.tld.+165+36820
1733 INFO Starting new HTTPS connection (1): dyndns.yunohost.org
10162 DEBUG "PUT /migrate_key_to_sha512/ HTTP/1.1" 500 30
10164 ERROR   File "/usr/bin/yunohost", line 219, in <module>
    timeout=opts.timeout,
  File "/usr/lib/python2.7/dist-packages/moulinette/__init__.py", line 136, in cli
    moulinette.run(args, output_as=output_as, password=password, timeout=timeout)
  File "/usr/lib/python2.7/dist-packages/moulinette/interfaces/cli.py", line 390, in run
    ret = self.actionsmap.process(args, timeout=timeout)
  File "/usr/lib/python2.7/dist-packages/moulinette/actionsmap.py", line 495, in process
    return func(**arguments)
  File "/usr/lib/moulinette/yunohost/dyndns.py", line 233, in dyndns_update
    migration["module"].MyMigration().migrate(dyn_host, domain, key)
  File "/usr/lib/moulinette/yunohost/data_migrations/0002_migrate_to_tsig_sha256.py", line 67, in migrate
    traceback.print_stack(file=stack)

10171 ERROR La migration 2 migrate_to_tsig_sha256 a échoué avec l’exception La migration du domaine dyndns domain.tld à hmac-sha512 a échoué, annulation des modifications. Erreur : 500 - <h1>Internal Server Error</h1>, annulation
Traceback (most recent call last):
  File "/usr/lib/moulinette/yunohost/dyndns.py", line 233, in dyndns_update
    migration["module"].MyMigration().migrate(dyn_host, domain, key)
  File "/usr/lib/moulinette/yunohost/data_migrations/0002_migrate_to_tsig_sha256.py", line 74, in migrate
    error_code=str(r.status_code), error=error))
MoulinetteError: La migration du domaine dyndns domain.tld à hmac-sha512 a échoué, annulation des modifications. Erreur : 500 - <h1>Internal Server Error</h1>
10172 DEBUG action [23361.1] ended after 9.080s
10173 DEBUG lock has been released

On dirait que la clé est corrompu.
Qu’est ce que je peux faire pour corriger ce problème de key/migration?

Salut,

hm c’est peut-être une erreur temporaire … est-ce que tu as tenté de relancer la commande une deuxième fois au cas où ?

Oui, en faite ca fait plusieurs jours que j’essaie

PS je viens de refaire mes alias mail aussi, je me fait spammer de mail yunohost dyndns update >> /dev/null

L’algorithme de génération des clefs n’est pas suffisamment sécurisé pour la signature TSIG du domaine « domain.tld », lancement de la migration vers hmac-sha512 qui est plus sécurisé
sh: 1: dnssec-keygen: not found
La migration 2 migrate_to_tsig_sha256 a échoué avec l’exception list index out of range, annulation

la commande dnssec-keygen existe et fonctionne

Hm okay, peut-être que la génération des clefs a pondu un truc problématique … Je pense que les supprimer (peut-être les déplacer histoire d’avoir un backup au cas où) puis relancer la commande devrait la regénérer.

Du coup est-ce que tu peux tenter un :

mv /etc/yunohost/dyndns/*+165* /tmp/

puis le yunohost dyndns update ?

Je pense que c’est la migration dû à l’utilisation de HMAC-SHA512 qui ce fait pas, parce que j’ai pas de clef +165, c’est une clef +157.
Il y a cette ligne aussi dans le debug
1709 DEBUG Chargement de la migration 2 migrate_to_tsig_sha256…

l’erreur a l’air d’être là

dns_dnssec_findmatchingkeys: error reading key file Kdomain.tld.+157+15053.private: bad key type

on dirait que la clé privée est corrompu. Il est possible de régénérer les clés manuellement?

J’ai déplacé les 2 fichiers +157 et fait un yunohost dyndns update

Erreur : Aucun domaine n’a été enregistré avec DynDNS

Sans les clés il ne trouve pas de nom de domaine.
Bon je continuerai demain…

Bon j’ai tout essayé, le problème persiste.
Est-il possible de régénérer les clés manuellement avec dnssec-keygen? Ou bien de supprimer le nom de domaine et que je refasse une inscription?

C’est bon, j’ai réussi à régler le problème.
Après avoir demandé la suppression du nom de domaine, j’ai refait une installation de yunohost sur virtualbox avec le nom de domaine précédemment supprimé, ce qui a régénéré les clés associées.
Il m’a juste récupéré les 2 fichiers .key et .private pour les remettre sur mon serveur actuel.