Znaleziono przyczynę problemów dehydrated z serwerami ACME różnymi od LetsEncrypt

Sebastian Krause określił źródło dziwnej niekompatybilności z usługą Bypass skryptu dehydrated, używanego do automatyzacji uzyskiwania certyfikatów TLS za pomocą protokołu ACME. Z Bypass współpracują zarówno klient wzorcowy, jak i uacme, ale nie dehydrated (dokładniej, również z pewnymi obejściami działał, ale wyłącznie w trybie dns-1).

Powód okazał się banalny: zamiast prawdziwie analizować odpowiedź w formacie JSON, autor dehydrated wykorzystał specyfikę formatowania konkretnego wyjścia JSON z usługi Let’s Encrypt i przeprowadzał analizę za pomocą wyrażenia regularnego. Jednak Bypass zwraca nie ładnie sformatowany, a zminimalizowany JSON, a używane wyrażenie regularne nie zadziałało. Podane podejście nie wyklucza pojawienia się problemów także z LetsEncrypt, jeśli ta usługa w przyszłości zmieni format wydania bez ostrzeżenia, pozostając w pełni w granicach oficjalnego protokołu.

Podczas dyskusji nad problemem zaproponowano użycie zewnętrznego parsera JSON, takiego jak json_pp lub jq (dodać do potoku ‘jq -r «.authorizations | .[]»‘ dla prawidłowej analizy).
Wadą takiego podejścia jest zamazanie idei ograniczenia się do minimalnych i łatwych do weryfikacji środków, a także problemy z przetwarzaniem błędów.

Autor projektu dehydrated (projekt niedawno został sprzedany firmie Apilayer GmbH) zgodził się, że analiza JSON jest dużym problemem, ale dodawanie zewnętrznych parserów nie wydaje mu się dobrym pomysłem, ponieważ jednym z kluczowych atutów skryptu jest brak uzależnienia od zewnętrznych zależności. Obecnie jest zajęty, ale ma nadzieję w najbliższych dniach zwrócić uwagę na rozwiązanie problemu. W planach jest przerobienie parsera JSON lub integracja gotowego parsera w języku shell — JSON.sh.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster