Die Ursache der Probleme von dehydrated mit ACME-Servern, die nicht LetsEncrypt sind, wurde gefunden.

Sebastian Krause bestimmte die Quelle der seltsamen Inkompatibilität mit dem Service Bypass des Skripts dehydrated, das zur Automatisierung der TLS-Zertifikatsanfrage über das ACME-Protokoll verwendet wird. Bypass funktioniert sowohl mit dem Referenz-Client als auch mit uacme, aber nicht mit dehydrated (genauer gesagt, es hat auch mit einigen Umgehungsmanövern funktioniert, jedoch ausschließlich im dns-1-Modus).

Die Ursache stellte sich als banal heraus: Anstatt die Antwort im JSON-Format richtig zu parsen, nutzte der Autor von dehydrated eine Besonderheit der spezifischen JSON-Ausgabe von Let’s Encrypt und führte das Parsen mittels regulärer Ausdrücke durch. Aber Bypass gibt kein schön formatiertes, sondern ein minimiertes JSON zurück, und das verwendete reguläre Ausdruck hat nicht funktioniert. Der angegebene Ansatz schließt das Auftreten von Problemen mit LetsEncrypt nicht aus, falls dieser Service in Zukunft ohne Vorwarnung das Ausgabeformat ändert und dabei weiterhin vollkommen im Rahmen des offiziellen Protokolls bleibt.

Bei der Diskussion des Problems wurde vorgeschlagen, einen externen JSON-Parser zu verwenden, wie zum Beispiel json_pp oder jq (in den Pipe ‚jq -r „.authorizations | .[]“‘ hinzufügen für eine korrekte Analyse).
Ein Nachteil dieses Ansatzes ist die Verwässerung der Idee, mit minimalen und leicht verifizierbaren Mitteln auszukommen, sowie Probleme mit der Fehlerbehandlung.

Der Autor des dehydrated-Projekts (das Projekt wurde kürzlich verkauft an Apilayer GmbH) stimmte zu, dass das Parsen von JSON ein großes Problem darstellt, aber er hält es nicht für eine gute Idee, externe Parser hinzuzufügen, da eines der Hauptmerkmale des Skripts die Unabhängigkeit von externen Abhängigkeiten ist. Derzeit ist er beschäftigt, hofft jedoch, in den nächsten Tagen Zeit für die Lösung des Problems zu finden. Geplant ist die Überarbeitung des JSON-Parsers oder die Integration eines fertigen Parsers in der Shell — JSON.sh.

Quelle: opennet.ru

60GB SSD 8Gb DDR4