Problématique
Nous avons un front qui tourne sous Apache en HTTPS et nous avons une API disponible sur le même serveur mais sur un endpoint non protégé. Il est donc impossible de les faire communiquer ensemble pour le moment...
Problématique
Solution
Nous allons générer un certificat sur notre serveur et le passer en configuration dans notre application node.
Solution
Générer un certificat auto-signé à la racine de votre projet
openssl req -nodes -new -x509 -keyout server.key -out server.cert
Solution
Ajouter le code suivant sur votre serveur
const https = require('https');
const fs = require('fs');
const express = require("express");
https.createServer({
key: fs.readFileSync('./server.key'),
cert: fs.readFileSync('./server.cert')
}, app).listen(5004, () => {
console.log('Mongodb API listen on port 5004');
});Nous créons un serveur https autour de notre app Express en utilisant la librairie fs (fileSystem) afin de lire les fichiers server.key et server.cert d'une façon synchrone.
Solution
Notre API est maintenant disponible en HTTPS
Solution
Note
N'oubliez pas de changer votre fichier .env.production pour votre front afin de taper sur du https et non http.
Solution
ctrl + x pour enregistrer
Solution
n'oubliez pas de redéployer votre front afin que le nouveau fichier d'environnement soit pris en compte.
Solution
Lorsque j'essaie de me connecter, je décide d'inspecter les logs de mon conteneur docker afin de savoir ce qu'il se passe exactement. Si des erreurs se produisent, vous pouvez fixer rapidement les erreurs. Il est important de laisser assez de logs dans notre application afin de maitriser un minimum de choses.
On peut voir que notre front a réussi à se connecter mais une erreur persiste avec les redirections et cela tout particulièrement avec une application React.
Solution