Sebastian Krause l'origine di una strana incompatibilità con il servizio di uno script , utilizzato per automatizzare l'ottenimento di certificati TLS tramite il protocollo ACME. Con Bypass funzionano sia il client di riferimento che uacme, ma non dehydrated (in effetti, ha funzionato anche con alcuni workaround, ma esclusivamente in modalità dns-1).
La causa si è rivelata banale: invece di analizzare la risposta in formato JSON per davvero, l'autore di dehydrated ha utilizzato una caratteristica di formattazione di un particolare output JSON del servizio Let’s Encrypt e ha eseguito l'analisi usando espressioni regolari. Tuttavia, Bypass restituisce un JSON minificato, non ben formattato, e l'espressione non ha funzionato. L'approccio indicato non esclude la possibilità di problemi anche con LetsEncrypt, poiché questo servizio potrebbe modificare in futuro senza preavviso il formato di output, rimanendo però all'interno del protocollo ufficiale.
Durante la discussione del problema è stato suggerito di utilizzare un parser JSON esterno, come o (aggiungere a pipe ‘jq -r «.authorizations | .[]»‘ per un'analisi corretta).
Lo svantaggio di questo approccio è la confusione dell'idea di dotarsi di strumenti minimi e facilmente verificabili, oltre ai problemi con la gestione degli errori.
L'autore del progetto dehydrated (il progetto è recentemente alla società Apilayer GmbH) , che l'analisi del JSON rappresenta un grosso problema, ma non ritiene una buona idea aggiungere parser esterni, poiché uno dei principali vantaggi dello script è l'assenza di dipendenze esterne. Attualmente è occupato, ma spera di dedicare attenzione alla risoluzione del problema nei prossimi giorni. Nei piani è prevista la revisione del parser JSON o l'integrazione di un parser già pronto in linguaggio shell — .
Fonte: opennet.ru
