Avatars, logos de site et erreurs de certificat

Bonjour !

J’ai configuré des serveurs Discourse sur environ 5 instances et elles semblent toutes présenter un comportement étrange. Je ne sais pas s’il s’agit réellement d’un bug ou si d’autres personnes ont rencontré le même problème.

Étapes pour reproduire le problème

  • La configuration du serveur se déroule sans accroc.
  • L’assistant de configuration se passe bien : toutes les images sont téléchargées et affichées comme prévu.
  • L’utilisateur reçoit le lien d’inscription, clique dessus pour suivre, et l’inscription se déroule correctement.
  • (C’est ici que les choses se gâtent) : l’utilisateur se connecte et tous les logos du site sont cassés — seuls les titres textuels s’affichent.
  • L’utilisateur ne peut pas télécharger ou attribuer un avatar personnalisé.
  • Le certificat du site signale que le site n’est pas sécurisé.
  • Pour une raison inconnue, cela n’affecte QUE le navigateur utilisé pour l’inscription, et le taux d’échec est beaucoup plus élevé avec Chrome.

Dépannage

  • Nous avons conseillé aux utilisateurs de vider le cache et les cookies de leur navigateur — le problème persiste.
  • Nous avons demandé aux utilisateurs de réinstaller leurs navigateurs, principalement Chrome — le problème persiste.
  • Nous avons demandé aux personnes d’utiliser une identité alternative dans Chrome ou d’essayer un autre navigateur (Safari, Firefox, etc.) — cela fonctionne !

Nous n’avons absolument aucune idée de pourquoi le dernier point fonctionne et pourquoi l’identité d’inscription d’origine est affectée. Il ne serait pas tenable de demander à nos utilisateurs (environ 600 à 700) de se déconnecter de leur identité Chrome et de se reconnecter — si, pour une raison quelconque, c’est effectivement la solution.

Des idées ?

Salutations,
Mark

Est-ce une installation standard de 30 minutes ? Ou y a-t-il quelque chose de personnalisé ici ?

Avez-vous activé force_https dans les paramètres du site pour voir si cela résout le problème ?

Je ne parviens pas à reproduire vos étapes dans mon bac à sable sur la dernière branche, il serait donc très utile si vous pouviez partager un lien vers l’une des instances concernées.

Bonjour Bahnu,

  • Installation standard de 30 minutes
  • Aucune personnalisation
  • force_https n’est pas activé, mais comme je l’ai dit, ce problème n’affecte que le navigateur utilisé pour l’inscription

Essayez d’activer force_https. Je suis à 99 % sûr que cela résoudra votre problème.

D’accord. Toutes les instances d’installation reçoivent leur certificat d’un proxy Nginx inverse qui n’est PAS la même machine. Est-ce que force_https fera toujours la différence ?

Donc ce n’est pas une installation standard. Vous avez dit que si.

Si Discourse se trouve derrière un correctement configuré proxy inverse, l’option force_https fera assurément la différence. Ce paramètre indique essentiellement à Discourse de charger toutes les ressources et les éléments statiques via HTTPS.

D’accord, mes excuses.

Donc, parlons-nous de force_https dans app.yml ou dans le bloc de serveur Nginx ?

Je fais déjà passer le trafic correctement, mais je ne vois pas la propriété dans le fichier yml.

Ni l’un ni l’autre.

force_https est un paramètre de site que vous devez activer dans la zone d’administration.

Cela risque-t-il de me bloquer l’accès ?

À moins que votre proxy inverse ne soit configuré incorrectement, il n’y a absolument rien à craindre ici.

Si vous n’êtes pas sûr de la configuration de votre proxy inverse, consultez cette configuration et comparez-la à la vôtre : Add an offline page to display when Discourse is rebuilding or starting up

Ça l’a fait, d’ailleurs. Bloquez-moi. L’activation de force_https a résolu le problème d’image, MAIS cela a rendu impossible l’authentification depuis les navigateurs avec une nouvelle session. La session existante fonctionne bien, mais dès que vous vous déconnectez, vous ne pouvez plus revenir.

Il y a un problème avec votre proxy inverse. Vous devrez vérifier sa configuration pour vous assurer que tout est correctement configuré.

Je viens de le faire, j’ai déjà configuré efficacement tout mon bloc serveur comme le suggère l’article. C’est probablement pourquoi les sessions dans les profils alternatifs ou les navigateurs fonctionnent normalement après l’inscription/la connexion initiale.

Le seul élément où ma configuration diffère, c’est que je n’utilise pas templates.yml.

Cela va nécessiter beaucoup plus d’investigation.

D’accord. Étrange. Je n’ai rien modifié. Toutes les images fonctionnent parfaitement. Point final.

Cependant, j’obtiens toujours un certificat invalide lors de l’installation initiale, uniquement dans le navigateur de l’utilisateur.

Cela pourrait être dû au cache du navigateur ou à un certificat mal configuré. Avez-vous obtenu un certificat SSL Let’s Encrypt ou un autre ?

C’est Let’s Encrypt via Certbot. Le certificat est valide. Je pense que c’est le cache du navigateur.

Essayez de vous inscrire en navigation privée. Recevez-vous toujours une erreur ?

Et une chose que je suppose être suspecte ici : utilisez-vous une sorte d’authentification externe ? (connexion via les réseaux sociaux / SSO, etc.)

Non. Pas d’authentification externe. J’ai essayé en navigation privée. Rien n’y fait. Même résultat.
Cela doit venir du bloc serveur. J’investiguerai un peu plus tard.

Partagez-vous un lien vers une telle installation ?

Avez-vous basé votre configuration nginx sur celle répertoriée ici ?

Assurez-vous d’envoyer X-Forwarded-Proto.