Après avoir installé Discourse, je reçois une erreur HTTP 502, et le journal indique :
$ sudo ./launcher logs app
x86_64 arch detected.
run-parts: executing /etc/runit/1.d/00-ensure-links
run-parts: executing /etc/runit/1.d/00-fix-var-logs
run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
run-parts: executing /etc/runit/1.d/anacron
run-parts: executing /etc/runit/1.d/cleanup-pids
Cleaning stale PID files
run-parts: executing /etc/runit/1.d/copy-env
run-parts: executing /etc/runit/1.d/letsencrypt
[Tue 06 Jun 2023 01:51:07 PM UTC] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Tue 06 Jun 2023 01:51:07 PM UTC] Create account key ok.
[Tue 06 Jun 2023 01:51:07 PM UTC] Registering account: https://acme-v02.api.letsencrypt.org/directory
[Tue 06 Jun 2023 01:51:09 PM UTC] Registered
[Tue 06 Jun 2023 01:51:09 PM UTC] ACCOUNT_THUMBPRINT='V5GxRKC8yO-5jvYjc3WlSSMbTABmaNtxUNs8XVoL1R8'
[Tue 06 Jun 2023 01:51:09 PM UTC] Creating domain key
[Tue 06 Jun 2023 01:51:10 PM UTC] The domain key is here: /shared/letsencrypt/<mon domaine>/<mon domaine>.key
[Tue 06 Jun 2023 01:51:10 PM UTC] Single domain='<mon domaine>'
[Tue 06 Jun 2023 01:51:10 PM UTC] Getting domain auth token for each domain
[Tue 06 Jun 2023 01:51:13 PM UTC] Getting webroot for domain='<mon domaine>'
[Tue 06 Jun 2023 01:51:13 PM UTC] Verifying: <mon domaine>
[Tue 06 Jun 2023 01:51:15 PM UTC] Pending, The CA is processing your order, please just wait. (1/30)
[Tue 06 Jun 2023 01:51:19 PM UTC] Pending, The CA is processing your order, please just wait. (2/30)
[Tue 06 Jun 2023 01:51:23 PM UTC] Pending, The CA is processing your order, please just wait. (3/30)
[Tue 06 Jun 2023 01:51:27 PM UTC] <mon domaine>:Verify error:202.117.43.203: Fetching http://<mon domaine>/.well-known/acme-challenge/UuD6jm6XJAaoXG7lE_IKfNVuHtqB4dokQXm-ll0bmrk: Timeout during connect (likely firewall problem)
[Tue 06 Jun 2023 01:51:27 PM UTC] Please check log file for more details: /shared/letsencrypt/acme.sh.log
Can't open ca.cer for reading, No such file or directory
140104391968064:error:02001002:system library:fopen:No such file or directory:../crypto/bio/bss_file.c:69:fopen('ca.cer','r')
140104391968064:error:2006D080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:76:
unable to load certificate
Error loading file /dev/fd/63
...
nginx: [emerg] cannot load certificate "/shared/ssl/ics.yhdang.top.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/ics.yhdang.top.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/ics.yhdang.top.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
Je suppose que cela se produit parce que Discourse essaie de générer automatiquement un certificat et de le vérifier en mode HTTP, en accédant à l’URL répertoriée. Cependant, mon adresse IP est sous le pare-feu d’une institution et ne peut donc pas autoriser les adresses IP externes à y accéder, pas plus que l’AC.
J’ai également appris sur le site de Let’s Encrypt que le défi DNS peut être utilisé si le mode HTTP n’est pas disponible, mais je ne suis pas sûr de la manière de procéder avec Discourse.
Bonjour @pfaffman, merci beaucoup pour votre information ! En suivant les instructions de ce post, la page d’accueil de Discourse s’affiche enfin.
Il ne reste qu’un seul petit problème : j’utilise Cloudflare pour générer un certificat pour le serveur d’origine. Mais lorsque j’essaie d’accéder à la page depuis le navigateur, un avertissement NET::ERR_CERT_AUTHORITY_INVALID s’affiche (bien que je puisse continuer en l’ignorant, mais mes utilisateurs ne le voudront probablement pas).
Je me demande si ce problème a quelque chose à voir avec Discourse, et je suis curieux de connaître les méthodes pour réellement déboguer ce problème. Merci.
De plus, comme sshd.template.yml est obsolète, je dois modifier manuellement /etc/nginx/conf.d/discourse..conf pour faire pointer ssl_certificate et ssl_certificate_key vers /shared/ssl/ssh.crt et /shared/ssl/ssh.key (la valeur par défaut est /shared/ssl/<nom de domaine>.cer), sinon nginx ne fonctionnera pas en raison de problèmes de certificat, se plaignant comme suit :
Vous devriez simplement utiliser le modèle web.ssl (et pas le modèle web.letsencrypt.ssl). Le fichier yml d’exemple contient les lignes suivantes :
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
Décommentez simplement la première :
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
Cela configurera nginx pour SSL en utilisant /shared/ssl/ssl.crt et /shared/ssl/ssl.key. Avec cela, vous devez simplement vous assurer d’avoir un certificat et une clé valides à ces emplacements. En supposant que vous avez installé à l’emplacement standard, le chemin vers ce répertoire sur le système hôte est /var/discourse/shared/standalone/ssl/.
Au final, j’ai découvert que c’était le certificat de Cloudflare le coupable. Passer au défi DNS via Let’s Encrypt fonctionne à merveille.
Maintenant, j’ai un peu plus de connaissances sur le fonctionnement interne de Discourse. Cool !
–
Mise à jour : Au fait, est-il possible de permettre aux utilisateurs de choisir comment ils généreront leur certificat lors du processus d’installation ? Pour les nouveaux venus comme moi, nous devrons lire et trouver les journaux pour découvrir que les certificats entraînent une échec de connexion.
Non. L’installation est conçue pour une manière simple d’installer cela (qui fonctionne presque toujours). L’installation derrière un pare-feu qui n’autorise pas l’accès depuis le web public est une installation qui sera difficile à prendre en charge.