Certificado Let's Encrypt não está renovando

Olá a todos. Meu certificado LetsEncrypt expirou recentemente, no dia 4, e todas as tentativas de renová-lo falharam. Li vários posts aqui de pessoas com problemas semelhantes, mas nenhuma daquelas soluções (reconstruir o container, executar comandos de renovação manual, etc.) funcionou para mim.

Seguindo a seção de solução de problemas do guia, descobri um erro nos meus logs (./launcher logs app):

[Sex 06 Dez 17:30:05 UTC 2024] Usando CA: https://acme-v02.api.letsencrypt.org/directory
[Sex 06 Dez 17:30:05 UTC 2024] Multi domain='DNS:discourse.[DOMAIN1].org,DNS:discourse.[DOMAIN1].org,DNS:[DOMAIN2].org'
[Sex 06 Dez 17:30:05 UTC 2024] Obtendo token de autenticação de domínio para cada domínio
[Sex 06 Dez 17:30:07 UTC 2024] Obtendo webroot para domínio='discourse.[DOMAIN1].org'
[Sex 06 Dez 17:30:08 UTC 2024] Obtendo webroot para domínio='discourse.[DOMAIN1].org'
[Sex 06 Dez 17:30:08 UTC 2024] Obtendo webroot para domínio='[DOMAIN2].org'
[Sex 06 Dez 17:30:08 UTC 2024] Verificando: discourse.[DOMAIN1].org
[Sex 06 Dez 17:30:08 UTC 2024] Pendente, A CA está processando seu pedido, por favor, aguarde. (1/30)
[Sex 06 Dez 17:30:12 UTC 2024] Pendente, A CA está processando seu pedido, por favor, aguarde. (2/30)
[Sex 06 Dez 17:30:15 UTC 2024] Pendente, A CA está processando seu pedido, por favor, aguarde. (3/30)
[Sex 06 Dez 17:30:19 UTC 2024] Pendente, A CA está processando seu pedido, por favor, aguarde. (4/30)
[Sex 06 Dez 17:30:22 UTC 2024] Sucesso
[Sex 06 Dez 17:30:22 UTC 2024] Verificando: discourse.[DOMAIN1].org
[Sex 06 Dez 17:30:23 UTC 2024] Sucesso
[Sex 06 Dez 17:30:23 UTC 2024] Verificando: [DOMAIN2].org
[Sex 06 Dez 17:30:23 UTC 2024] Pendente, A CA está processando seu pedido, por favor, aguarde. (1/30)
[Sex 06 Dez 17:30:27 UTC 2024] [DOMAIN2].org:Erro de verificação:198.49.23.145: Resposta inválida de http://[DOMAIN2].org/.well-known/acme-challenge/ohJAvgwBR81O8qmzsMPx-ZnmxoKOPAfuGCz0VZJeFWk: 404
[Sex 06 Dez 17:30:27 UTC 2024] Por favor, verifique o arquivo de log para mais detalhes: /shared/letsencrypt/acme.sh.log
CN = discourse.[DOMAIN1].org
erro 10 em lookup de 0 profundidade: certificado expirou
erro fullchain.cer: verificação falhou

Primeiramente, por que dois domínios aparecem aqui? Eu só preciso de um certificado em DOMAIN1, o domínio onde nossa instância do Discourse está hospedada. DOMAIN2 é nosso host de retransmissão SMTP e já possui um certificado.

Em segundo lugar, o arquivo de log do LetsEncrypt mencionado (/shared/letsencrypt/acme.sh.log) não existe, ou pelo menos não consigo encontrá-lo no local que ele indica.

Mais importante ainda, há alguma maneira de fazer com que o script pare de verificar DOMAIN2 e simplesmente renove com sucesso o certificado em DOMAIN1?

1 curtida

Esta é uma instalação padrão? Você tem um proxy reverso?

Estamos rodando em um droplet Digital Ocean, instalado usando o script deles, mas parece que isso ainda seria considerado uma instalação padrão. O Cloudflare está gerenciando o DNS, mas a nuvem laranja está desativada. Não há proxy reverso que eu conheça.

1 curtida

Esse endereço IP não é do Discourse. Seu DNS está com defeito? Você tem vários registros A?

Qual é o seu nome de host?

Correto. Esse endereço IP pertence ao [DOMAIN2], um domínio diferente que possuímos e que não tem nada a ver com o Discourse, o que me leva de volta à minha pergunta original: por que esse domínio e IP estão aparecendo nos logs?

O DNS está funcionando bem. Ainda consigo acessar o site se eu ignorar o aviso do navegador sobre o certificado expirado. Nosso outro site não-Discourse também está funcionando perfeitamente. Nosso nome de host (o do Discourse, não o outro) é discourse.gomomentum.org.

1 curtida

Esta foi difícil! Eu não conseguia encontrar um motivo para o let’s encrypt estar indo para o host errado. Acontece que nem sempre é o DNS.

tl;dr: Você disse ao let’s encrypt para obter certificados para seu domínio base, além do do Discourse, e mais tarde alterou o DNS do domínio base para apontar para seu outro site.

E a versão mais longa…

Um dia, você quis que o Discourse lidasse com requisições não apenas para discourse.gomomentum.org, mas também para gomomentum.org, então você adicionou uma seção ao seu app.yml como descrito aqui: Set up Let’s Encrypt with multiple domains / redirects

Portanto, as requisições do let’s encrypt verificaram que ambos os domínios estavam originalmente apontando para o seu servidor Discourse.

Isso explica por que as requisições para ALGUM OUTRO DOMÍNIO estavam indo para o let’s encrypt.

Então, outro dia, provavelmente anos depois, mas em algum momento nos últimos 3 meses, alguém decidiu que gomomentum.org deveria apontar para o seu site principal e não mais para o site Discourse. E nesse ponto, o let’s encrypt parou de funcionar, mas os certificados duram 3 meses, então quando isso aconteceu, era quase impossível conectar a mudança de DNS com a falha na renovação deste certificado.

Eu removi essa seção do seu app.yml e fiz uma reconstrução, e você voltou a funcionar!

3 curtidas

:face_palm: De fato, lembro-me agora, mexi muito nas configurações de domínio quando estava com problemas de e-mail há alguns meses. Isso parece ser um efeito colateral não intencional de todo o trabalho de adivinhação que fiz na época. Obrigado, Jay!

1 curtida