Atrasts dehidratācijas problēmu cēlonis ar ACME serveriem, kas nav LetsEncrypt

Sebastjans Krauze definēts dīvainas nesaderības ar pakalpojumu avots apvedceļš skripts dehidrēts, ko izmanto, lai automatizētu TLS sertifikātu saņemšanu, izmantojot ACME protokolu. Gan atsauces klients, gan uacme darbojas ar Bypass, bet nav atūdeņoti (precīzāk, tas darbojās arī ar dažiem risinājumiem, bet tikai dns-1 režīmā).

Iemesls izrādījās triviāls: tā vietā, lai reāli parsētu atbildi JSON formātā, dehidrētā autors izmantoja konkrētas pakalpojuma Let's Encrypt JSON izvades formatēšanas funkciju un parsēja to, izmantojot regulāro izteiksmi. Bet Bypass atgriež nevis skaisti formatētu, bet gan samazinātu JSON un lietoto regulāra izteiksme nestrādāja. Šī pieeja neizslēdz problēmas ar LetsEncrypt, ja šis pakalpojums nākotnē bez brīdinājuma maina izdošanas formātu, vienlaikus pilnībā paliekot oficiālā protokola ietvaros.

Apspriežot problēmu, tika ieteikts izmantot ārēju JSON parsētāju, piemēram, json_pp vai jq (lai pareizi analizētu cauruli, pievienojiet 'jq -r ".authorizations | .[]"').
Šīs pieejas trūkums ir ideja par minimālu un viegli pārbaudāmu līdzekļu izmantošanu, kā arī problēmas ar kļūdu apstrādi.

Dehidrētā projekta autors (projekts bija nesen izpārdots Apilayer GmbH) vienojās, ka JSON parsēšana ir liela problēma, taču viņš neuzskata, ka ārējo parsētāju pievienošana ir laba ideja, jo viena no galvenajām skripta priekšrocībām ir ārējās atkarības trūkums. Šobrīd viņš ir aizņemts, bet tuvāko dienu laikā cer veltīt savu uzmanību problēmas risināšanai. Plānos ietilpst JSON parsētāja pārstrādāšana vai gatavā parsētāja integrēšana čaulas valodā - JSON.sh.

Avots: opennet.ru

Pievieno komentāru