ssl-cert-check não está obtendo as datas de expiração corretas para os certificados Lets Encrypt

1

Estou usando o ssl-cert-check para rastrear uma lista de meus certificados de domínios.

No meu crontab, configurei-o para ser executado silenciosamente e envie-me um email com os domínios expirados, mas o comando que estou usando para depurar é:

ssl-cert-check -f ssldomains.txt -x 21 -i

Ele está lendo corretamente o arquivo e recuperando os certificados de toda a lista, mas parece que não está obtendo a data de validade correta dos certificados emitidos pelo LetsEncrypt.org

Outros provedores de certificados não parecem ser afetados por esse problema.

Por exemplo, um certificado que expira em 24 de março de 2017, quando eu o inspeciono no meu navegador, está expirando em 15 de janeiro de 2017.

Estou servindo com o nginx.

Por que a ferramenta CLI recuperaria a data de expiração incorreta e como posso corrigir isso?

    
por Andy 05.01.2017 / 12:41

1 resposta

1

Este parece ser um problema SNI . Se você fornecer vários certificados SSL no mesmo IP, o cliente enviará o nome do host junto com a solicitação inicial, para que o servidor possa fornecer o certificado correto. Versões mais antigas do ssl-cert-check não fazem isso, o recurso foi introduzido com a versão 3.27.

Ambas as versões 14.04 e 16.04 do Ubuntu versão 3.27, mas parece que o recurso está com bug nesta versão. Existem basicamente duas linhas de código que são relevantes:

TLSSERVERNAME="FALSE"

e:

if [ "${TLSSERVERNAME}" = "TRUE" ]
then
     TLSFLAG="${TLSFLAG} -servername $1"
fi

Como você pode ver, a variável está definida como FALSE e depois é verificada como TRUE, mas nunca é alterada.

A versão atual em GitHub (3.30) tem um bloco de código adicional:

if ${OPENSSL} s_client -h 2>&1 | grep '-servername' > /dev/null
then
    TLSSERVERNAME="TRUE"
else
    TLSSERVERNAME="FALSE"
fi

Isso verifica a versão openssl instalada para o suporte ao nome do servidor. Quando eu adiciono este bloco no script na minha instalação local do Ubuntu, o resultado é bom, sem o bloco eu recebo o certificado errado, assim como você.

Portanto, este é um bug, que foi corrigido pelo autor, mas ainda não encontrou o caminho para o repositório do Ubuntu. Você pode consertá-lo e esperar que, após a próxima atualização, o repositório contenha uma versão fixa ou use o script do github.

    
por 05.01.2017 / 14:03