Sebastian Krause la source d'une étrange incompatibilité avec le service du script , utilisé pour automatiser l'obtention des certificats TLS via le protocole ACME. Avec Bypass, le client de référence et uacme fonctionnent, mais pas dehydrated (en fait, il a également fonctionné avec quelques manœuvres de contournement, mais uniquement en mode dns-1).
La raison s’est avérée être banale : au lieu d'analyser la réponse au format JSON comme il se doit, l’auteur de dehydrated a utilisé une particularité du format spécifiquement pour la sortie JSON du service Let’s Encrypt et a exécuté l’analyse à l'aide d'une expression régulière. Mais Bypass renvoie un JSON non joliment formaté, mais minifié, et l'expression n’a pas fonctionné. L'approche indiquée ne prévient pas les problèmes avec LetsEncrypt si ce service change son format de sortie à l'avenir sans préavis, tout en restant dans le cadre du protocole officiel.
Lors de la discussion du problème, il a été proposé d'utiliser un parser JSON externe, tel que ou (ajouter dans le pipe ‘jq -r «.authorizations | .[]»‘ pour une analyse correcte).
L'inconvénient de cette approche est d'effacer l'idée de se contenter d'outils minimaux et facilement vérifiables, ainsi que des problèmes de gestion des erreurs.
L'auteur du projet dehydrated (le projet a récemment été à la société Apilayer GmbH) , que l'analyse JSON est un grand problème, mais qu'ajouter des parsers externes n'est pas une bonne idée, car un des principaux atouts du script est l'absence de dépendances externes. Il est actuellement occupé, mais espère consacrer du temps à la résolution du problème dans les prochains jours. Dans ses plans, il a noté une refonte du parser JSON ou l'intégration d'un parser prêt à l'emploi en langage shell — .
Source : opennet.ru
