Sebastian Krause la fuente de una extraña incompatibilidad con el servicio del script , utilizado para automatizar la obtención de certificados TLS a través del protocolo ACME. Con Bypass, funcionan tanto el cliente de referencia como uacme, pero no dehydrated (de hecho, también funcionó con algunos maniobras adicionales, pero exclusivamente en modo dns-1).
La razón resultó ser banal: en lugar de analizar la respuesta en formato JSON correctamente, el autor de dehydrated utilizó una peculiaridad del formato específico de la salida JSON del servicio Let’s Encrypt y realizaba el análisis mediante expresiones regulares. Pero Bypass devuelve un JSON minificado, no bien formateado, y la expresión no funcionó. El enfoque indicado no descarta la posibilidad de problemas con LetsEncrypt, si este servicio en el futuro cambia el formato de salida sin previo aviso, manteniéndose dentro del marco del protocolo oficial.
Durante la discusión del problema, se sugirió utilizar un analizador JSON externo, como o (agregar en pipe ‘jq -r «.authorizations | .[]»‘ para un análisis correcto).
La desventaja de este enfoque es la dilución de la idea de utilizar herramientas mínimas y fácilmente verificables, así como problemas con el manejo de errores.
El autor del proyecto dehydrated (el proyecto fue recientemente a la empresa Apilayer GmbH) , que el análisis de JSON es un gran problema, pero no considera buena idea agregar analizadores externos, ya que una de las principales virtudes del script es la ausencia de dependencia de terceros. En este momento está ocupado, pero espera poder prestar atención a la solución del problema en los próximos días. Tiene en mente revisar el analizador JSON o integrar un analizador ya disponible en el lenguaje shell — .
Fuente: opennet.ru
