Sebastian Krause źródło dziwnej niekompatybilności z usługą skryptu , 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 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 lub (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ł firmie Apilayer GmbH) , ż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 — .
Źródło: opennet.ru
