Себастиан Краузе източника на странната несъвместимост със сервиса скрипта , използван за автоматизация на получаването на TLS сертификати по протокола ACME. С Bypass работят както еталонният клиент, така и uacme, но не dehydrated (по-точно, той също работи с някои обходни маневри, но изключително в режим dns-1).
Причината се оказа банална: вместо да анализира отговора в JSON формат наистина, авторът dehydrated е използвал особеността на форматирането на конкретния JSON изход от услугата Let’s Encrypt и е извършвал анализа с помощта на регулярни изрази. Но Bypass връща не красиво форматиран, а минифициран JSON, и използваното не сработи. Посоченият подход не изключва възможността за проблеми и с LetsEncrypt, ако услугата в бъдеще без предупреждение промени формата на отдаване, оставяйки се в пълен обхват на официалния протокол.
При дискусията на проблема беше предложено да се използва външен JSON анализатор, такъв като или (добавете в pipe ‘jq -r «.authorizations | .[]»‘ за коректен анализ).
Недостатък на такъв подход е замъгляването на идеята да се постигне минимално и лесно проверимо средство, а също и проблеми с обработката на грешки.
Авторът на проекта dehydrated (проектът наскоро беше на компанията Apilayer GmbH) , което е голям проблем при анализа на JSON, но добавянето на външни парсери не се смята за добра идея, тъй като едно от ключовите предимства на скрипта е липсата на връзка с външни зависимости. В момента той е зает, но се надява в близките няколко дни да обърне внимание на решението на проблема. В плановете е предвидена преобработка на JSON парсера или интеграция на готов парсер на езика shell — .
Източник: opennet.ru
