Leiti muude kui LetsEncrypti ACME serverite dehüdratsiooniprobleemide põhjus

Sebastian Krause määratletud teenusega kummalise kokkusobimatuse allikas Bypass stsenaarium veetustatud, mida kasutatakse TLS-sertifikaatide vastuvõtmise automatiseerimiseks ACME protokolli abil. Nii referentsklient kui ka uacme töötavad Bypassiga, kuid mitte dehüdreeritud (täpsemalt töötas see ka mõne lahendusega, kuid ainult dns-1 režiimis).

Põhjus osutus triviaalseks: selle asemel, et vastust JSON-vormingus päriselt sõeluda, kasutas dehüdraadi autor teenuse Let's Encrypt konkreetse JSON-väljundi vormindamisfunktsiooni ja sõelus seda regulaaravaldise abil. Kuid Bypass tagastab mitte kaunilt vormindatud, vaid minimeeritud JSON-i ja kasutatud regulaaravaldis ei töötanud. See lähenemisviis ei välista probleeme LetsEncryptiga, kui see teenus muudab tulevikus väljastamise vormingut ilma hoiatuseta, jäädes samal ajal täielikult ametliku protokolli raamidesse.

Probleemi arutamisel soovitati kasutada välist JSON-parserit, näiteks json_pp või jq (õige parsimiseks lisage torusse 'jq -r ".authorizations | .[]"').
Selle lähenemisviisi puuduseks on minimaalsete ja hõlpsasti kontrollitavate vahendite kasutamise idee lahjendamine, samuti probleemid vigade käsitlemisega.

Dehüdreeritud projekti autor (projekt oli hiljuti välja müüdud Apilayer GmbH) nõus, et JSON-i sõelumine on suur probleem, kuid ta ei pea väliste parserite lisamist heaks mõtteks, kuna skripti üks peamisi eeliseid on väliste sõltuvustega sidumise puudumine. Ta on praegu hõivatud, kuid loodab lähipäevil pühendada oma tähelepanu probleemi lahendamisele. Plaanid hõlmavad JSON-parseri ümbertöötamist või valmis parseri integreerimist shell-keelde - JSON.sh.

Allikas: opennet.ru

Lisa kommentaar