Version de Discourse sur forum.abc.com.au : NON TROUVÉE

Discourse installé selon le guide officiel sur GitHub
Tout s’est bien passé, mais j’obtiens une erreur 502 lors de l’accès au forum.

J’ai essayé de consulter les journaux de production de Rails, mais je n’ai rien trouvé concernant production_error ou les journaux de Sidekiq.

J’ai cependant vu ceci avec tail :
Création de la portée :open. Remplacement de la méthode existante Poll.open.
Création de la portée :open. Remplacement de la méthode existante Poll.open.
Impossible d’accéder à ‘/images/welcome/discourse-edit-post-animated.gif’ pour obtenir ses dimensions.

La commande discourse doctor indique :

Version de Discourse sur forum.abc.com.au : NON TROUVÉE

J’ai essayé de désactiver SSL et de reconstruire, et j’ai pu accéder au forum.

Il doit y avoir un problème avec SSL, que je n’arrive pas à identifier. Lors de l’installation de SSL, la résolution de l’adresse IP a réussi.

Veuillez m’aider.

Cela ressemble à une situation où, avant d’avoir activé HTTPS, vous avez lié des images non sécurisées.

@pfaffman Merci pour votre réponse.

C’est une installation neuve. Nous ne pouvons pas faire de lien manuel.

Après avoir examiné tous les journaux, j’ai constaté que l’erreur provient de l’émission du certificat Let’s Encrypt. Toute personne rencontrant un problème similaire peut apporter son aide ci-dessous.

J’ai d’abord vu cette erreur dans les journaux 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)

J’ai ensuite tenté de vérifier les journaux SSL :

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

Avant d’exécuter le script d’installation de Discourse pour un sous-domaine, nous devons vérifier si le domaine principal possède des enregistrements CAA et identifier l’autorité de certification. Si ce n’est pas Let’s Encrypt (dans mon cas, l’enregistrement CAA du domaine principal pointe vers comodoca.com), vos certificats Let’s Encrypt pour Discourse ne seront pas émis.

Solution : Vous devez ajouter un enregistrement CAA pour le sous-domaine Discourse, comme indiqué ici
Acme:error:caa :: CAA record for ... prevents issuance - Help - Let's Encrypt Community Support

Supprimez les anciens fichiers de certificat et essayez de reconstruire à nouveau :

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

Si vous connaissez un moyen de tester ces enregistrements sans logiciel supplémentaire, je pourrais envisager que discourse-setup le teste, mais je n’ai jamais vu cela auparavant.

Excellent travail d’avoir trouvé cela !

Il est raisonnable de supposer que, si vous possédez un domaine et que vous savez ce qu’est une CAA pour avoir pu la configurer, vous comprenez les implications de Let’s Encrypt.

@pfaffman
La commande dig caa {domain.tld} renverra l’enregistrement.
Nous souhaitons d’abord vérifier s’il renvoie un enregistrement,
puis, dans l’affirmative, déterminer si l’autorité de certification est autre que letsencrypt.org.

Cependant, c’est un cas très rare. Nous ne sommes pas sûrs de vouloir l’inclure.

@Stephen

Exact. Si je possède un domaine, je sais ce que j’en fais.
J’aidais quelqu’un ; ce problème pourrait concerner des hébergeurs utilisant cPanel et fournissant des certificats SSL automatiques via d’autres fournisseurs tels que Comodo. Ils ajoutent par défaut un certain nombre d’enregistrements lors de la création d’un site (WordPress) dans cPanel.

Quoi qu’il en soit, c’est un cas très rare ; c’est la première fois que j’en vois un.

Nous voyons occasionnellement apparaître CAA ici ; la réponse par défaut que nous recevons lorsque nous signalons qu’ils ont restreint l’émission de certificats pour tout leur domaine est généralement :man_facepalming:t2:

@Stephen

C’est intéressant ! Je dois vérifier, je ne sais pas si nous pouvons verrouiller l’émission de certificats pour un domaine complet.

L’émission de certificats restreinte pour l’ensemble du domaine, c’est-à-dire pour tous ses sous-domaines ?

Si vous définissez un enregistrement CAA pour @ (le domaine), cela s’applique à la fois au domaine de premier niveau et aux sous-domaines. Vous pouvez toujours ajouter un enregistrement CAA spécifique pour un sous-domaine comme sous.domaine.com pour un service tel que Let’s Encrypt, ce qui restreindra la portée des certificats que LE peut émettre.

Ainsi :

domain.com.    CAA   0 issue "comodoca.com"
sous.domaine.com.    CAA   0  issue "letsencrypt.org"

Vous pouvez également spécifier issuewild au lieu de issue pour autoriser une autorité de certification à émettre un certificat wildcard, et utiliser iodef pour associer une adresse e-mail qui sera notifiée en cas de violation de la politique.

Même problème ici. Les commandes n’ont pas résolu le problème. J’ai changé pour le DNS et le proxy de Cloudflare. Le problème persiste pour moi.

Je l’ai fait plusieurs fois et je n’ai pas rencontré cela. Mais je suis définitivement un non-codeur, un non-expert, un non-tout-ce-qui-y-est-lié. Juste un utilisateur final heureux. Mais c’est frustrant.

Ma meilleure supposition est que vous aviez Cloudflare configuré en proxy et que vous avez reconstruit suffisamment de fois pour atteindre les limites de taux de Let’s Encrypt et que vous devez maintenant attendre une semaine pour obtenir un certificat.

La solution rapide et simple est de choisir un nouveau sous-domaine, de configurer Cloudflare en DNS uniquement et de reconstruire. Si cela fonctionne, alors j’ai raison à propos de la limitation de débit et vous pouvez soit apprendre à aimer le nouveau sous-domaine, soit attendre une semaine jusqu’à ce qu’il vous permette de réessayer.

Question honnête : la reconstruction demande-t-elle toujours un nouveau certificat à chaque fois ?

Je me posais la même question, je ne suis pas sûr de la requête, mais aucun nouveau certificat ne semble être émis si un est trouvé valide (je viens de reconstruire un bac à sable)

Cela se produit si un certificat valide n’existe pas.