Application Node express en HTTPS

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

Application Node express en HTTPS

By NicoHash

Application Node express en HTTPS

  • 22