Arquivo .cer SSL de comprimento zero

Olá,

Estou tentando instalar o Discourse a partir da página oficial do GitHub, no Ubuntu 22.04 Server LTS - a partir da última AMI da AWS. A rede está configurada, com FQDNs anexados ao host e IP elástico.

Tudo é implantado corretamente, e consigo me conectar à instância Nginx na porta 80. Mas, não consigo me conectar pela porta 443, e o erro repetido no error.log do Nginx é o seguinte:

> 2023/10/09 08:41:12 [emerg] 9342#9342: cannot load certificate "/shared/ssl/discourse.xxxx.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

Investigações adicionais mostram que o arquivo .cer tem tamanho zero bytes, localizado em

./shared/standalone/ssl/discourse.XXXX.com.cer

Contêiner do arquivo de log: app:$/var/log/nginx

Alguém já passou por esse problema? Não parece ser relacionado a permissões, pois tudo está sendo executado com credenciais sudo.

Estou genuinamente confuso com isso.

EDIT: Tentei excluir as pastas /shared/ssl e letsencrypt, e tentei tanto uma reconstrução quanto uma reinstalação, ambas com o mesmo resultado.

Você executou o discourse-setup? Ele tenta se conectar a si mesmo para verificar se o DNS aponta para o servidor e se as portas estão abertas, mas é um teste rudimentar.

Se você executar uma reconstrução mais de algumas vezes sem DNS e portas configurados corretamente, atingirá os limites de taxa do Let’s Encrypt. Se for esse o caso, e eu suspeito que seja, você precisará esperar uma semana ou usar um subdomínio diferente (ou seguir algumas instruções complicadas para solicitar um certificado para o subdomínio desejado e outro).

Acho que se você executar docker logs app, poderá ver onde o acme está falhando ao obter um certificado.

Olá Jason,
Encontrei o mesmo problema e levei dias e muitas horas para descobrir o que estava quebrado e como consertar. Portanto, espero que esta informação ajude você e outros que encontram o mesmo problema.

Estava recebendo este erro durante a execução de ./discourse-setup:
** FALHA AO INICIALIZAR ** por favor, role para cima e procure por erros anteriores

Em muitas tentativas de corrigir este erro, tentei o seguinte:
Executei ./discourse-doctor sem sucesso.
Executei ./launcher rebuild app sem sucesso.
Tentei solucionar problemas dentro do contêiner usando: docker exec -it app /bin/bash
A imagem do contêiner tem ferramentas limitadas para solucionar problemas, então apenas li os logs usando este comando:
less /var/log/nginx/error.log
Foi aqui que vi muitas mensagens contendo: [emerg] 2832#2832: não é possível carregar certificado
Por algum motivo, não consegui encontrar a causa raiz, mas quando saí do contêiner e digitei:
./launcher logs app do host -
Consegui ver mais dados e de repente encontrei este erro:
“Erro ao criar nova ordem :: muitos certificados (5) já emitidos para este conjunto exato de domínios nas últimas 168 horas, tente novamente após 2024-08-10T12:58:12Z:”
Pesquisei soluções alternativas para este problema, mas decidi apenas esperar pelo tempo especificado.
Após o tempo de espera ter decorrido, tentei novamente: ./launcher rebuild app
Desta vez funcionou e os certificados SSL ( *.cer ) foram criados com sucesso e meu site estava no ar.

A moral da história aqui é que se você obtiver um certificado *.cer vazio, você precisa verificar os logs do contêiner usando este comando do host:
root@host:/var/discourse# ./launcher logs app
Role pelos logs e procure por “muitos certificados”
Se eu soubesse disso, poderia ter economizado dias de pesquisa :frowning:

Suposições feitas na minha resposta:

  • Você confirmou que seu host está configurado corretamente com seu provedor de DNS.
  • Você confirmou seu e-mail de registro e configurações de SMTP.
  • Você confirmou que /var/discourse/containers/app.yml foi preenchido corretamente.
1 curtida