Знойдзена прычына праблем dehydrated з ACME-серверамі, выдатнымі ад LetsEncrypt

Sebastian Krause вызначыў крыніца дзіўнай несумяшчальнасці з сэрвісам байпас скрыпту абязводжаны, які выкарыстоўваецца для аўтаматызацыі атрымання TLS-сертыфікатаў па пратаколе ACME. З Bypass працуюць і эталонны кліент, і uacme, але не dehydrated (дакладней, ён таксама з некаторымі абыходнымі манеўрамі зарабіў, але выключна ў рэжыме dns-1).

Чыннік апынулася банальная: замест таго каб разбіраць адказ у фармаце JSON па сучаснасці, аўтар dehydrated выкарыстаў асаблівасць фарматавання пэўнага JSON-высновы ад сэрвісу Let's Encrypt і выконваў разбор пры дапамозе рэгулярнага выраза. Але Bypass вяртае не хораша адфарматаваны, а мініфікаваны JSON, і скарыстанае рэгулярны выраз не спрацавала. Указаны падыход не выключае ўзнікнення праблем і з LetsEncrypt, калі дадзены сэрвіс у будучыні без папярэджання памяняе фармат выдачы, застаўшыся пры гэтым цалкам у рамках афіцыйнага пратакола.

Пры абмеркаванні праблемы было прапанавана выкарыстоўваць вонкавы парсер JSON, такі як json_pp або jq (дадаць у pipe 'jq -r ".authorizations | .[]"' для карэктнага разбору).
Недахопам такога падыходу з'яўляецца размыццё ідэі абысціся мінімальнымі і лёгка верыфікуецца сродкамі, а таксама праблемы з апрацоўкай памылак.

Аўтар праекта dehydrated (праект нядаўна быў прададзены кампаніі Apilayer GmbH) пагадзіўся, Што разбор JSON з'яўляецца вялікай праблемай, але дадаваць вонкавыя парсеры ён не лічыць добрай ідэяй, бо адным з ключавых добрых якасцяў скрыпту з'яўляецца адсутнасць прывязкі да вонкавых залежнасцяў. Цяпер ён заняты, але спадзяецца ў бліжэйшыя некалькі дзён удзяліць увагу вырашэнню праблемы. У планах адзначана перапрацоўка парсера JSON або інтэграцыя гатовага парсера на мове shell. JSON.sh.

Крыніца: opennet.ru

Дадаць каментар