Certificado SSL Let's Encrypt não renovando automaticamente pela 2ª vez consecutiva

Olá, pessoal. Preciso de ajuda para solucionar um problema. Pela segunda vez seguida, meu certificado SSL do Let’s Encrypt não foi renovado automaticamente. Lendo os tópicos relevantes aqui, consegui renovar o certificado em cada ocasião removendo o antigo e reconstruindo o aplicativo. Eu tinha a impressão de que fazer isso faria com que a renovação ocorresse automaticamente na próxima vez. Não ocorreu.

Não vejo nenhuma evidência de um trabalho cron sendo executado em algum lugar que tente renovar o certificado. Presumo que eu deva procurar nos vários locais na máquina host, em vez de dentro do contêiner Docker. Estou certo? crontab -l diz “no crontab for root” e não vejo nada em /etc/cron*.

Como resultado, não consigo ter confiança se meu servidor está (1) não tentando renovar o certificado ou (2) tentando e falhando. Alguém está disposto a me guiar na solução de problemas?

Infelizmente, como eu apaguei shared/standalone/{letsencrypt,ssl} para provisionar o certificado novamente, não tenho logs antigos para analisar. Como eu poderia pelo menos verificar se o trabalho cron está instalado para que eu possa verificar os logs na próxima vez que o sistema tentar renovar o certificado?

Obrigado.

2 curtidas

Acho que esta pode ser a última vez que isso aconteceu. Houve uma correção em dezembro:

Muito obrigado, mas eu preferiria muito verificar as configurações para ver se a próxima renovação provavelmente ocorrerá. Eu não sei como verificar essas configurações, então essa é a ajuda que estou pedindo agora.

Aparentemente, deve haver um cron job. Onde ele está? Eu não vejo nenhum listado no meu servidor. Isso não é realmente um cron job, mas sim uma tarefa agendada no Rails?

Eu vi em /var/discourse/shared/standalone/letsencrypt/acme.sh.log (no sistema host) que o Discourse verificou meu certificado SSL e a resposta foi “Ainda é válido”, então suponho que isso é evidência de que o Discourse tentará renovar o certificado a tempo.

Agora eu gostaria de saber como esse trabalho de “cron” está configurado? É realmente um cron job no nível do Linux ou apenas uma tarefa agendada recorrente no Rails usando algo como whenever? Isso é algo que posso examinar e verificar sem olhar o código-fonte? Eu poderia encontrar isso usando o console do Rails ou o que quer que seja isso em 2026? (Faz muito tempo que não trabalho com Rails.)

Obrigado.

Ah, e aí, finalmente descobri que este defeito se resumiu a um atalho mágico não documentado, pouco claro e evidentemente inesperado. “Se começar com /, então deve ser uma regex.” Eu ainda não entendo todo o contexto, mas é o que parece ser.

Isso é a cultura do Duck Typing para você: flexibilidade maravilhosa com o risco de que, se você não escrever as coisas, os clientes terão uma surpresa. :wink:

Parece que seria sensato fortalecer o Pups::ReplaceCommand para verificar com mais cuidado se o to parece uma regex ou não. Ou o que quer que esteja fazendo que assume que deve eval() algo em vez de tratá-lo como o texto de substituição.

Presumo que isso se enquadre na categoria de Trabalho de Zeladoria Que Ninguém Tem Tempo Nem Energia Para Fazer? Se alguém pudesse me apontar alguns exemplos úteis de como o ReplaceCommand precisa se comportar, talvez eu pudesse doar algum tempo e energia para isso.

Pelo menos eu tenho uma ideia melhor do que está acontecendo, mas esse conhecimento já começou a se deteriorar antes mesmo de eu terminar de escrever esta frase. :person_shrugging: