Fichier .cer SSL de longueur zéro

Salut,

J’essaie d’installer Discourse depuis la page github officielle, sur Ubuntu 22.04 Server LTS - à partir de la dernière AMI AWS. Le réseau est configuré, avec des FQDN attachés à l’hôte et une adresse IP élastique.

Tout se déploie correctement, et je peux me connecter à l’instance nginx du port 80. Mais, je ne peux pas me connecter via le port 443, et l’erreur répétée dans nginx error.log est la suivante :

> 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)

Une enquête plus approfondie montre que le fichier .cer a une taille de zéro octet, situé dans

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

Conteneur du fichier journal : app:$/var/log/nginx

Quelqu’un a-t-il déjà rencontré ce problème ? Cela ne semble pas être lié aux permissions, car tout est exécuté avec des identifiants sudo.

Vraiment perplexe sur ce coup.

EDIT : J’ai essayé de supprimer les dossiers /shared/ssl et letsencrypt, et j’ai essayé une reconstruction et une réinstallation, toutes deux avec le même résultat.

Avez-vous exécuté discourse-setup ? Il tente de se connecter à lui-même pour vérifier que le DNS pointe vers le serveur et que les ports sont ouverts, mais c’est un test rudimentaire.

Si vous effectuez une reconstruction plusieurs fois sans que le DNS et les ports soient correctement configurés, vous atteindrez les limites de taux de Let’s Encrypt. Si tel est le cas, et je le soupçonne, vous devrez attendre une semaine ou utiliser un sous-domaine différent (ou suivre des instructions compliquées pour demander un certificat pour le sous-domaine souhaité et un autre).

Je pense que si vous exécutez docker logs app, vous pourriez voir où acme échoue à obtenir un certificat.

Salut Jason,

J’ai rencontré le même problème et il m’a fallu des jours et de nombreuses heures pour comprendre ce qui n’allait pas et comment le résoudre. J’espère donc que ces informations vous aideront, ainsi que d’autres personnes confrontées au même problème.

J’ai obtenu cette erreur lors de l’exécution de ./discourse-setup :

** ÉCHEC DU DÉMARRAGE ** veuillez faire défiler vers le haut et rechercher une erreur antérieure

Dans de nombreuses tentatives pour résoudre ce problème, j’ai essayé ceci :
J’ai exécuté ./discourse-doctor sans succès.
J’ai exécuté ./launcher rebuild app sans succès.
J’ai essayé de dépanner depuis le conteneur en utilisant : docker exec -it app /bin/bash
l’image du conteneur a des outils limités pour le dépannage, j’ai donc simplement lu les journaux en utilisant cette commande :
less /var/log/nginx/error.log
C’est là que j’ai vu de nombreux messages contenant : [emerg] 2832#2832: impossible de charger le certificat
Pour une raison quelconque, je n’ai pas pu trouver la cause principale, mais lorsque j’ai quitté le conteneur et tapé :
./launcher logs app depuis l’hôte -
J’ai pu voir plus de données et j’ai soudainement trouvé cette erreur :
“Erreur lors de la création de la nouvelle commande :: trop de certificats (5) déjà émis pour cet ensemble exact de domaines au cours des dernières 168 heures, réessayez après 2024-08-10T12:58:12Z :”
J’ai cherché sur Google des solutions de contournement pour ce problème, mais j’ai décidé d’attendre simplement la durée spécifiée.
Une fois le délai écoulé, j’ai réessayé : ./launcher rebuild app
Cette fois, cela a fonctionné et les certificats SSL ( *.cer ) ont été créés avec succès et mon site était en ligne.

La morale de l’histoire est que si vous obtenez un certificat *.cer vide, vous devez vérifier les journaux du conteneur en utilisant cette commande depuis l’hôte :
root@host:/var/discourse# ./launcher logs app
Faites défiler les journaux et recherchez “trop de certificats”
Si j’avais su cela, cela m’aurait évité des jours de recherche :frowning:

Hypothèses formulées dans ma réponse :

  • Vous avez confirmé que votre hôte est correctement configuré avec votre fournisseur DNS.
  • Vous avez confirmé votre e-mail d’enregistrement et vos paramètres SMTP.
  • Vous avez confirmé que /var/discourse/containers/app.yml a été correctement renseigné.
1 « J'aime »