Trovata la causa dei problemi di disidratazione con server ACME diversi da LetsEncrypt

Sebastiano Krause definito fonte di strana incompatibilità con il servizio Aggirare sceneggiatura disidratato, utilizzato per automatizzare la ricezione dei certificati TLS utilizzando il protocollo ACME. Sia il client di riferimento che uacme funzionano con Bypass, ma non disidratato (più precisamente, ha funzionato anche con alcuni accorgimenti, ma esclusivamente in modalità DNS-1).

Il motivo si è rivelato banale: invece di analizzare realmente la risposta in formato JSON, l'autore di disidratato ha utilizzato la funzionalità di formattazione di uno specifico output JSON dal servizio Let's Encrypt e lo ha analizzato utilizzando un'espressione regolare. Ma Bypass restituisce JSON non ben formattato, ma minimizzato e usato espressione regolare non ha funzionato. Questo approccio non esclude problemi con LetsEncrypt se in futuro questo servizio cambia il formato di emissione senza preavviso, pur rimanendo completamente nel quadro del protocollo ufficiale.

Durante la discussione del problema, è stato suggerito di utilizzare un parser JSON esterno come json_pp o jq (aggiungere 'jq -r ".authorizations | .[]"' alla pipe per un'analisi corretta).
Lo svantaggio di questo approccio è la diluizione dell’idea di utilizzare mezzi minimi e facilmente verificabili, nonché i problemi con la gestione degli errori.

Autore del progetto disidratato (il progetto è stato recentemente esaurito Apilayer GmbH) ho accettato, che l'analisi di JSON è un grosso problema, ma non ritiene che l'aggiunta di parser esterni sia una buona idea, poiché uno dei principali vantaggi dello script è la mancanza di legame con dipendenze esterne. Attualmente è occupato, ma spera di dedicare la sua attenzione alla risoluzione del problema nei prossimi giorni. I piani includono la rielaborazione del parser JSON o l'integrazione di un parser già pronto nel linguaggio della shell - JSON.sh.

Fonte: opennet.ru

Aggiungi un commento