Versão do Discourse em forum.abc.com.au: NÃO ENCONTRADA

Discourse instalado usando o guia oficial do GitHub
Tudo correu bem, mas estou recebendo um erro 502 ao acessar o fórum.

Tentei verificar os logs de produção do Rails, mas não encontrei nada relacionado a production_error ou logs do Sidekiq.

Vi apenas isso ao usar o tail:
Criando escopo :open. Sobrescrevendo o método existente Poll.open.
Criando escopo :open. Sobrescrevendo o método existente Poll.open.
Não foi possível acessar ‘/images/welcome/discourse-edit-post-animated.gif’ para obter suas dimensões.

Ao executar o discourse doctor, aparece:

Versão do Discourse em forum.abc.com.au: NÃO ENCONTRADA

Tentei desabilitar o SSL e reconstruir; consegui acessar o fórum.

Deve haver um problema com o SSL que não consigo identificar. Durante a instalação do SSL, a resolução do IP para a conexão foi bem-sucedida.

Por favor, ajudem.

Parece que, antes de você habilitar o HTTPS, você vinculou imagens não seguras.

@pfaffman Obrigado pela resposta.

É uma instalação nova. Não há como vincular manualmente.

Após analisar todos os logs, descobri que o erro está na emissão do certificado do Let’s Encrypt. Qualquer pessoa que esteja enfrentando um problema semelhante pode ajudar abaixo.

Primeiro, vi este erro nos logs do Nginx:

cannot load certificate "/shared/ssl/forum.abc.com.au.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)

Em seguida, tentei verificar os logs de SSL:

forum.abc.com.au:Verify error:CAA record for forum.abc.com.au prevents issuance

Antes de executar o script de instalação do Discourse para um subdomínio, precisamos verificar se o domínio principal possui registros CAA e confirmar a Autoridade Certificadora. Se não for a Let’s Encrypt (no meu caso, o registro CAA do domínio principal é comodoca.com), seus certificados Let’s Encrypt para o Discourse não serão emitidos.

Solução: Você precisa adicionar um registro CAA para o subdomínio do Discourse, conforme mencionado aqui
Acme:error:caa :: CAA record for ... prevents issuance - Help - Let's Encrypt Community Support

Delete os arquivos de certificado antigos e tente reconstruir novamente:

rm -rf /var/discourse/shared/standalone/ssl
rm -rf /var/discourse/shared/standalone/letsencrypt
./launcher rebuild app

Se você souber de uma maneira de testar esses registros que não exija software adicional, eu consideraria fazer o discourse-setup testá-lo, mas nunca vi isso antes.

Bom trabalho em descobrir isso!

É uma suposição razoável que, se você possui um domínio e sabe o que é CAA, tenha sido capaz de configurá-lo e, portanto, compreenda as implicações do Let’s Encrypt.

@pfaffman
dig caa {domain.tld} retornará o registro.
Primeiro, queremos verificar se ele retorna algum registro.
Em seguida, verificar se a autoridade emissora é diferente de letsencrypt.org.

Mas esse é um caso muito raro. Não tenho certeza se queremos incluir isso.

@Stephen

Correto. Se eu possuo um domínio, sei o que estou fazendo com ele.
Estava ajudando alguém; esse problema pode ocorrer com hospedagens que usam o cPanel e fornecem certificados SSL automáticos com outros provedores, como o Comodo. Eles adicionam vários registros por padrão ao criar um site (WordPress) no cPanel.

De qualquer forma, esse é um caso muito raro; é a primeira vez que vejo isso.

Vemos a CAA aparecer aqui ocasionalmente. A resposta padrão que recebemos quando apontamos que eles restringiram a emissão de certificados para todo o domínio costuma ser :man_facepalming:t2:

@Stephen

Isso é interessante! Preciso verificar, não sei se podemos bloquear a emissão de certificados para um domínio completo.

A emissão restrita de certificados para todo o domínio, ou seja, para todos os seus subdomínios?

Se você definir um registro CAA para @ (o domínio), isso se aplicará tanto ao domínio de nível superior quanto aos subdomínios. Você ainda pode adicionar um CAA específico para subdominio.seudominio.com para um serviço como o Let’s Encrypt, o que restringirá o escopo para o qual o LE pode emitir um certificado.

Portanto:

domain.com.    CAA   0 issue "comodoca.com"
sub.domain.com.    CAA   0  issue "letsencrypt.org"

Você também pode especificar issuewild em vez de issue para permitir que uma AC emita um certificado curinga, e iodef para associar um endereço de e-mail que será notificado em caso de violações de política.

Mesmo problema aqui. Os comandos não resolveram o problema. Mudei para DNS e proxy do Cloudflare. O problema persiste para mim.

Já fiz isso várias vezes e não tive esse problema. Mas sou definitivamente um não-programador, não-especialista, não-tudo-relacionado. Apenas um usuário final feliz. Mas isso é frustrante.

Minha melhor suposição é que você configurou o Cloudflare para proxy e reconstruiu vezes suficientes para atingir os limites de taxa do Let’s Encrypt e agora você tem que esperar uma semana para obter um certificado.

A solução rápida e simples é escolher um novo subdomínio, configurar o Cloudflare apenas para DNS e reconstruir. Se isso funcionar, então eu estou certo sobre a limitação de taxa e você pode aprender a amar o novo subdomínio ou esperar uma semana até que ele permita que você tente novamente.

Pergunta honesta: a reconstrução ainda solicita um novo certificado toda vez?

Eu estava apenas pensando sobre a mesma coisa, não tenho certeza sobre a solicitação, mas nenhum novo certificado parece ser emitido se um for encontrado válido (acabei de reconstruir um sandbox)

Isso acontece se um certificado válido não existir.