Sebastian Krause kilden til den merkelige inkompatibiliteten med tjenesten skriptet , brukt for å automatisere anskaffelse av TLS-sertifikater via ACME-protokollen. Bypass fungerer både med referansekunden og uacme, men ikke dehydrated (for mer presist, det virker også med noen omgåelser, men utelukkende i dns-1-modus).
Årsaken viste seg å være banal: i stedet for å analysere svaret i JSON-format på ordentlig måte, brukte forfatteren av dehydrated en spesifikk formatering fra tjenesten Let’s Encrypt og gjennomførte parsing ved hjelp av regulære uttrykk. Men Bypass returnerer ikke pent formattert, men minifisert JSON, og det brukte fungerte ikke. Den nevnte tilnærmingen utelukker ikke at det kan oppstå problemer med LetsEncrypt, dersom denne tjenesten i fremtiden endrer formatet uten varsling, og fortsatt er innenfor rammene av den offisielle protokollen.
Under diskusjonen av problemet ble det foreslått å bruke en ekstern JSON-parsere, slik som eller (legg til i pipe ‘jq -r «.authorizations | .[]»‘ for riktig parsing).
Ulempen med en slik tilnærming er at den svakner ideen om å klare seg med minimale og lett verifiserbare midler, samt problemer med feilhåndtering.
Forfatteren av prosjektet dehydrated (prosjektet ble nylig til selskapet Apilayer GmbH) , at JSON-parsing er et stort problem, men han anser det ikke som en god idé å legge til eksterne parsere, da en av de viktigste fordelene med skriptet er at det ikke er avhengig av eksterne avhengigheter. Han er for tiden opptatt, men håper å ha tid til å se på løsningen på problemet i løpet av de nærmeste dagene. Det er planlagt en redesign av JSON-parseren eller integrasjon av en eksisterende parser i shell-språket — .
Kilde: opennet.ru
