certificados

certificados

  • Ferramenta pra verificar quantidades de dias válidos de um certificado do letsencrypt

    Já faz algum tempo que venho recebendo esses emails do letsencrypt avisando que as notificações de certificados expirados enviados por email serão suspensas. Até aí ok. Imagino que isso consuma um volume razoável de banda da organização, sem falar nos problemas de antispam por aí.

    O problema é que enquanto eles param esse serviço, ao mesmo tempo não fornecem uma ferramenta fácil pra olhar quando certificado irá expirar. Claro que é possível fazer isso usando o openssl:

      
    ❯ openssl x509 -dates -noout -in /etc/letsencrypt/live/helio.loureiro.eng.br/cert.pem 
    notBefore=Mar  8 17:32:15 2025 GMT
    notAfter=Jun  6 17:32:14 2025 GMT    
     
    

    O problema é que não é possível fazer uma automação disso pra rodar alguma crontab e renovar os certificados em caso de expiração.

    Então resolvi arregaçar as mangas e fazer alguma coisa em Go! pra resolver de vez esse problema.

      
    $ /home/helio/bin/letsencrypt-cert-days
    helio.loureiro.eng.br=50
    hl.eng.br=50
    linux-br.org=50
    loureiro.eng.br=50
    truta.org=50
     
    

    O código está no GitHub.

  • Gerando certificados auto assinados com openssl

    Tenho feito muitos testes para utilizar TLS e mTLS.  TLS é uma camada de criptografia assimétrica para garantir a comunicação segura entre dois pontos.

    Em geral temos o model parecido com os sites web onde o servidor tem uma conexão segura assinada por uma autoridade certificadora e nos conectamos a ele.  No caso de mTLS, mutual TLS, é preciso validar quem conecta também.

    Pra gerar os testes que venho fazendo, gero um certificado de 1 dia usando openssl da seguinte forma:

    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 1 -nodes \
              -subj "/C=SE/ST=Stockholm/L=STHLM/O=Company/OU=ADP/CN=localhost

    Esse comando gera para mim a chave do servidor (key.pem) e a chave da autoridade certificadora, que assina a chave.

    Em geral carrego isso no meu programa que utiliza TLS.

    Pra testar (assumindo que seu serviço seja http e esteja usando a porta 9091):

    curl --cacert cert.pem --key key.pem --cert cert.pem "https://localhost:9091/

    Eu poderia gerar um chave pro client, que no caso é o comando curl, mas como é pra ambiente de testes, re-uso o mesmo. 

    Boa diversão!

We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.