Sebastian Krause die Quelle fĂŒr die seltsame InkompatibilitĂ€t mit dem Dienst identifiziert. Skript , das zur Automatisierung der TLS-Zertifikatsbeschaffung ĂŒber das ACME-Protokoll verwendet wird. Mit Bypass funktionieren sowohl der Referenz-Client als auch uacme, aber nicht dehydrated (genauer gesagt, es hat auch mit einigen Workarounds funktioniert, jedoch ausschlieĂlich im dns-1-Modus).
Der Grund war banal: Anstatt die Antwort im JSON-Format richtig zu parsen, hat der Autor von dehydrated eine Besonderheit der Formatierung einer bestimmten JSON-Ausgabe des Letâs Encrypt-Dienstes genutzt und das Parsen mit regulĂ€ren AusdrĂŒcken durchgefĂŒhrt. Aber Bypass gibt nicht schön formatiertes, sondern minimiertes JSON zurĂŒck, und das verwendete hat nicht funktioniert. Der angegebene Ansatz schlieĂt nicht aus, dass auch bei LetsEncrypt Probleme auftreten, wenn dieser Dienst in Zukunft ohne Vorwarnung das Ausgabeformat Ă€ndert, wĂ€hrend er weiterhin innerhalb des offiziellen Protokolls bleibt.
Bei der Diskussion des Problems wurde vorgeschlagen, einen externen JSON-Parser zu verwenden, wie z. B. oder (in die Pipe âjq -r «.authorizations | .[]»â fĂŒr eine korrekte Analyse hinzufĂŒgen).
Ein Nachteil dieses Ansatzes ist die UnschÀrfe der Idee, mit minimalen und leicht verifizierbaren Mitteln auszukommen, sowie die Probleme bei der Fehlerbehandlung.
Der Autor des Projekts dehydrated (das Projekt wurde kĂŒrzlich an die Firma Apilayer GmbH) , dass die Verarbeitung von JSON ein groĂes Problem darstellt, aber er hĂ€lt es nicht fĂŒr eine gute Idee, externe Parser hinzuzufĂŒgen, da eine der SchlĂŒsselstĂ€rken 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. Auf seiner To-do-Liste steht die Ăberarbeitung des JSON-Parsers oder die Integration eines fertigen Parsers in Shell-Sprache â .
Quelle: opennet.ru
