Sebastian Krause источник странной несовместимости с сервисом скрипта , используемого для автоматизации получения 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
