Fant årsaken til dehydrerte problemer med andre ACME-servere enn LetsEncrypt

Sebastian Krause definert kilde til merkelig inkompatibilitet med tjenesten bypass manus dehydrert, brukes til å automatisere mottak av TLS-sertifikater ved hjelp av ACME-protokollen. Både referanseklienten og uacme fungerer med Bypass, men ikke dehydrert (mer presist, det fungerte også med noen løsninger, men utelukkende i dns-1-modus).

Årsaken viste seg å være triviell: i stedet for å analysere svaret i JSON-format på ekte, brukte forfatteren av dehydrated formateringsfunksjonen til en spesifikk JSON-utgang fra Let's Encrypt-tjenesten og analyserte den ved å bruke et regulært uttrykk. Men Bypass returnerer ikke vakkert formatert, men minifisert JSON, og den brukte vanlig uttrykk virket ikke. Denne tilnærmingen utelukker ikke problemer med LetsEncrypt hvis denne tjenesten endrer utstedelsesformatet i fremtiden uten forvarsel, mens den forblir fullstendig innenfor rammen av den offisielle protokollen.

Når vi diskuterte problemet, ble det foreslått å bruke en ekstern JSON-parser som f.eks json_pp eller jq (legg til 'jq -r ".authorizations | .[]"' til røret for korrekt parsing).
Ulempen med denne tilnærmingen er uttynningen av ideen om å bruke minimale og lett verifiserbare midler, samt problemer med feilhåndtering.

Forfatter av det dehydrerte prosjektet (prosjektet ble nylig utsolgt Apilayer GmbH) avtalt, at parsing av JSON er et stort problem, men han anser ikke å legge til eksterne parsere som en god idé, siden en av hovedfordelene med skriptet er mangelen på binding til eksterne avhengigheter. Han er for tiden opptatt, men håper å vie oppmerksomheten sin til å løse problemet i løpet av de neste dagene. Planene inkluderer omarbeiding av JSON-parseren eller integrering av en ferdig parser i shell-språket - JSON.sh.

Kilde: opennet.ru

Legg til en kommentar