Sebastian Krause la fonte di una strana incompatibilità con il servizio di uno script , utilizzato per automatizzare l'ottenimento dei certificati TLS tramite il protocollo ACME. Con Bypass funzionano sia il client di riferimento che uacme, ma non dehydrated (in effetti, anche lui ha funzionato con alcune manovre, ma esclusivamente in modalità dns-1).
La causa si è rivelata banale: invece di analizzare realmente la risposta in formato JSON, l'autore di dehydrated ha utilizzato una caratteristica di formattazione di un particolare output JSON dal servizio Let's Encrypt e ha effettuato l'analisi tramite espressioni regolari. Ma Bypass restituisce un JSON minificato, non ben formattato, e l'espressione regolare utilizzata non ha funzionato. L'approccio indicato non esclude la possibilità di problemi con LetsEncrypt, se questo servizio in futuro cambiasse senza preavviso il formato di emissione, rimanendo comunque entro i limiti del protocollo ufficiale.
Durante la discussione del problema è stato proposto di utilizzare un parser JSON esterno, come o (aggiungi nel pipe ‘jq -r «.authorizations | .[]»‘ per un'analisi corretta).
Un limite di questo approccio è la confusione sull'idea di utilizzare strumenti minimi e facilmente verificabili, oltre ai problemi di gestione degli errori.
L'autore del progetto dehydrated (il progetto è stato recentemente all'azienda Apilayer GmbH) , che l'analisi JSON rappresenta un grande problema, ma non considera 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. Tra i piani c'è la revisione del parser JSON o l'integrazione di un parser pronto in linguaggio shell — .
Fonte: opennet.ru
