បានរកឃើញមូលហេតុនៃបញ្ហាខ្វះជាតិទឹកជាមួយម៉ាស៊ីនមេ ACME ក្រៅពី LetsEncrypt

Sebastian Krause определил источник странной несовместимости с сервисом ផ្លូវវាង скрипта ខះជាតិទឹក, используемого для автоматизации получения TLS-сертификатов по протоколу ACME. С Bypass работают и эталонный клиент, и uacme, но не dehydrated (точнее, он тоже с некоторыми обходными манёврами заработал, но исключительно в режиме dns-1).

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

При обсуждении проблемы было предложено использовать внешний парсер JSON, такой как json_ppjq (добавить в pipe ‘jq -r «.authorizations | .[]»‘ для корректного разбора).
Недостатком такого подхода является размытие идеи обойтись минимальными и легко верифицируемыми средствами, а также проблемы с обработкой ошибок.

Автор проекта dehydrated (проект недавно был លក់​ហើយ компании Apilayer GmbH) យល់ព្រម, что разбор JSON является большой проблемой, но добавлять внешние парсеры он не считает хорошей идеей, так как одним из ключевых достоинств скрипта является отсутствие привязки к внешним зависимостям. В настоящее время он занят, но надеется в ближайшие несколько дней уделить внимание решению проблемы. В планах отмечена переработка парсера JSON или интеграция готового парсера на языке shell — JSON.sh.

ប្រភព: opennet.ru

បន្ថែមមតិយោបល់