Sebastian Krause a fonte da estranha incompatibilidade com o serviço do script , usado para automatizar a obtenção de certificados TLS pelo protocolo ACME. Com o Bypass, tanto o cliente de referência quanto o uacme funcionam, mas não o dehydrated (na verdade, ele também funcionou com algumas manobras alternativas, mas exclusivamente em modo dns-1).
A razão acabou sendo banal: em vez de analisar a resposta no formato JSON de forma correta, o autor do dehydrated usou uma característica de formatação da saída JSON específica do serviço Let’s Encrypt e fez a análise com expressões regulares. Mas o Bypass retorna um JSON minimizado, não bem formatado, e a expressão não funcionou. A abordagem indicada não exclui o surgimento de problemas com o LetsEncrypt, caso esse serviço mude sem aviso prévio o formato de saída, permanecendo dentro dos limites do protocolo oficial.
Durante a discussão do problema, foi proposto usar um analisador JSON externo, como ou (adicionar em pipe ‘jq -r «.authorizations | .[]»‘ para uma análise correta).
A desvantagem dessa abordagem é que dilui a ideia de se utilizar ferramentas mínimas e facilmente verificáveis, além de trazer problemas com o tratamento de erros.
O autor do projeto dehydrated (o projeto foi recentemente para a empresa Apilayer GmbH) , que a análise do JSON é um grande problema, mas não considera uma boa ideia adicionar parsers externos, pois uma das principais qualidades do script é a ausência de dependências externas. Atualmente, ele está ocupado, mas espera dedicar atenção à solução do problema nos próximos dias. Nos planos, está a reimplementação do analisador JSON ou a integração de um parser pronto na linguagem shell — .
Fonte: opennet.ru
