Sebastian Krause zdroj podivné nekompatibility se službou skriptu , který se používá pro automatizaci získávání TLS certifikátů prostřednictvím protokolu ACME. S Bypass fungují jak referenční klient, tak uacme, ale ne dehydrated (přesněji, ten také s některými obstrukcemi fungoval, ale výhradně v režimu dns-1).
Příčina se ukázala být banální: místo toho, aby rozebíral odpověď ve formátu JSON skutečně, autor dehydrated využil specifickou vlastnost formátování určitého JSON výstupu od služby Let's Encrypt a prováděl rozbor pomocí regulárního výrazu. Bypass však vrací nehezky naformátovaný, ale minifikovaný JSON, a použitý nefungoval. Zvolený přístup nevylučuje vznik problémů ani s LetsEncrypt, pokud tato služba v budoucnu bez varování změní formát výstupu, přičemž zůstane zcela v rámci oficiálního protokolu.
Při diskusi o problému bylo navrženo použít externí JSON parser, jako je nebo (přidat do pipe ‘jq -r „.authorizations | .[]“‘ pro správný rozbor).
Nevýhodou tohoto přístupu je rozmazání myšlenky vyhnout se minimálním a snadno ověřitelným prostředkům, stejně jako problémy s zpracováním chyb.
Autor projektu dehydrated (projekt byl nedávno společnosti Apilayer GmbH) , že rozbor JSON je velkým problémem, ale dodávat externí parsers nepovažuje za dobrou myšlenku, protože jedním z klíčových předností skriptu je absence závislostí na externích nástrojích. V současnosti je zaneprázdněn, ale doufá, že se v následujících několika dnech bude moci věnovat řešení problému. V plánu je přepracování JSON parseru nebo integrace hotového parseru v shellovém jazyce — .
Zdroj: opennet.ru
