Eu tenho vários certificados SSL e gostaria de ser notificado quando um certificado expirar.
Minha idéia é criar um cronjob, que executa um comando simples todos os dias.
Eu sei que o openssl
comando no Linux pode ser usado para exibir as informações de certificado do servidor remoto, ou seja:
openssl s_client -connect www.google.com:443
Mas não vejo a data de validade nesta saída. Além disso, eu tenho que terminar este comando com CTRL+ c.
Como posso verificar a expiração de um certificado remoto de um script (de preferência usando openssl
) e fazê-lo no "modo de lote" para que seja executado automaticamente sem a interação do usuário?
-servername www.google.com
a SNI servidores habilitados Para evitar a necessidade de rescisão send / dev / null a ele< /dev/null
Respostas:
Seu comando agora esperaria uma solicitação http, como
GET index.php
por exemplo. Use isso:true
: não fornecerá nenhuma entrada seguida por eof, para que o openssl saia após a conexão.openssl ...
: o comando da sua pergunta2>/dev/null
: erro de saída será ignorado.openssl x509
: ativa o gerenciamento de dados de certificado X.509.-noout
: Suprime toda a saída do certificado-checkend 0
: verifique se o certificado expirou nos próximos 0 segundosfonte
-checkend
muito mais fácil do que o script que eu achava que estava fazendo aritmética de datas!Ele recebe o certificado, mas não o decodifica. Como isso seria necessário se você quiser a data, não a vê. Então, o que é necessário é que você o introduza no
x509
aplicativo OpenSSL para decodificar o certificado:Isso fornecerá o certificado decodificado completo no stdout, incluindo suas datas de validade.
fonte
Se você precisar verificar a data de validade, graças a esta postagem no blog , encontrou uma maneira de encontrar essas informações com outras informações relevantes com uma única chamada:
A saída inclui emissor, sujeito (para quem o certificado é emitido), data de emissão e finalmente data de vencimento :
fonte