Себастиан Краузе източника на странна несъвместимост с услугата скрипта , използван за автоматизация на получаването на 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
