Je ne peux pas configurer nginx : [emerg] impossible de charger le certificat « /var/discourse/shared/standalone/ssl/ssl.crt » : BIO_new_file() a échoué

(SSL: erreur:02001002:bibliothèque système:fopen:Fichier ou répertoire introuvable:fopen('/var/dis (…)
Je suis le guide, mais je ne trouve aucune information sur cette erreur.

Bonjour @slivo,

Voyons la sortie de ceci :

cd   /var/discourse/shared/standalone/ssl
ls -l

Des indices ?

1 « J'aime »

cd ssl: Aucun fichier ou dossier de ce type

Salut @slivo,

Cela indique que votre configuration Lets Encrypt n’a pas créé les certificats lors de la dernière reconstruction de votre conteneur.

Bien sûr, je suis sûr que vous le saviez déjà !

J’ai eu une installation qui a échoué de cette manière cette semaine. Peut-être essayer de faire un

./launcher rebuild app
2 « J'aime »

Je l’ai reconstruit à nouveau. Je l’ai configuré conformément aux directives. Le certificat SSL est certifié (/etc/nginx/sites-enabled/discourse.conf), mais j’ai une erreur :

SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE

Je ne peux pas démarrer nginx du tout.

 nginx.service: Le processus de contrôle a quitté, code=exited status=1
 nginx.service: Échec avec le résultat 'exit-code'.

Processus : 3840 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Processus : 25108 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=1/FAILURE)

// Échec du démarrage d’un serveur web haute performance et d’un serveur proxy inverse.

Salut @slivo,

Merci pour les mises à jour sur la configuration.

Est-ce que tu configures Discourse avec la version Docker standard, sans serveur proxy inverse en dehors du conteneur ?

Oui, et j’utilise également ce guide : Run other websites on the same machine as Discourse

Bonjour @slivo,

Dans le lien ci-dessus, il s’agit d’un aperçu de l’exécution de Discourse dans un conteneur Docker, exposant l’application via un socket UNIX à un proxy inverse.

Dans ce cas, vous NE devez PAS activer SSL dans le fichier yml du conteneur ; et vous DEVEZ configurer SSL avec Let’s Encrypt en utilisant certbot à l’extérieur du conteneur, uniquement sur le proxy inverse.

L’architecture générale de haut niveau ressemble à ceci :

UTILISATEURS WEB <-- HTTPS --> PROXY INVERSE <-- HTTP --> CONTENEUR DOCKER

Veuillez publier votre fichier yml en masquant vos mots de passe et adresses e-mail ; et voyons ce que vous avez mis en place.

Merci.

1 « J'aime »

Mais maintenant, je ne comprends plus. Ensuite, j’ai créé un nouveau certificat en utilisant certbot. Et je l’ai ici comme suit :

/etc/letsencrypt/live/myadress.com/fullchain.pem
Votre fichier de clé a été enregistré à :
/etc/letsencrypt/live/myadress.com/privkey.pem

Dois-je modifier l’adresse dans ce fichier ou dans /etc/nginx/sites-enabled/discourse.conf, ou est-ce que je fais tout faux ?

Bonjour @slivo,

Lorsque vous configurez un proxy inverse devant une autre application avec une instance Nginx : devez-vous être très précis sur l’emplacement des fichiers de configuration, à l’intérieur ou à l’extérieur du conteneur ?

Je ne sais pas si j’ai bien compris. Je veux simplement mettre Discourse derrière nginx. Je n’ai pas d’autre application sur le serveur, mais je souhaite le faire pour offrir une meilleure protection depuis l’extérieur.

Bonjour @slivo,

Je comprends votre frustration. Permettez-moi de vous expliquer cela gentiment.

Dans l’un de vos messages précédents, vous avez écrit :

/etc/letsencrypt/live/myadress.com/fullchain.pem
Votre fichier de clé a été enregistré à :
/etc/letsencrypt/live/myadress.com/privkey.pem

Vous n’avez pas précisé si vous vous trouvez à l’intérieur ou à l’extérieur du conteneur Docker.

Comme vous le savez, nginx (dans votre cas) s’exécute à la fois directement sur l’hôte et à l’intérieur de l’application (le conteneur Docker).

Lorsque vous publiez :

/etc/letsencrypt/live/myadress.com/fullchain.pem
Votre fichier de clé a été enregistré à :
/etc/letsencrypt/live/myadress.com/privkey.pem

Comment pouvons-nous, en tant qu’observateurs externes, savoir exactement à quoi vous faites référence si vous ne fournissez pas toutes les informations ? Cette configuration se trouve-t-elle à l’intérieur ou à l’extérieur du conteneur ? Nous pouvons « deviner » et « supposer » que vous parlez de l’extérieur du conteneur, mais comme vous ne fournissez pas ces détails, nous ne pouvons pas en être certains. Mon expérience est que le chemin le plus court entre un problème et sa solution consiste à ne jamais rien supposer et à prêter une attention particulière aux détails.

De plus, vous n’avez pas publié votre fichier yml. Vous n’avez pas non plus partagé vos fichiers de configuration nginx situés à l’extérieur du conteneur. Par conséquent, nous ne pouvons pas « voir » ce que vous faites réellement dans votre configuration.

J’espère que cela vous aidera.

1 « J'aime »