/ / Configuration de HTTPS sur Nginx et NodeJS - node.js, ssl, nginx, https

Configuration de HTTPS sur Nginx et NodeJS - node.js, ssl, nginx, https

J'utilise Nginx pour publier du contenu statique sur le port 80 et une redirection 433 (avec SSL) vers NodeJS. La configuration de Nginx est la suivante:

server {
listen 443 ssl;

ssl_certificate /opt/projetos/nodejs-project-ssl/vectortowns-cert.pem;
ssl_certificate_key /opt/projetos/nodejs-project-ssl/vectortowns-key.pem;
ssl_protocols        SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;

server_name 127.0.0.1:443;

location / {
proxy_pass  https://127.0.0.1:8443;
proxy_redirect off;
proxy_set_header Host $host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_set_header X-Forwarded-Proto https;
}

}

Avec NodeJS, Express et EJS, je publie du contenu dynamique sur le port 8443, également configuré pour utiliser HTTPS. Voir le code javascript ci-dessous (uniquement les parties importantes pour la question).

// other codes...
/* Enable https */
var privateKey = fs.readFileSync("/opt/projetos/nodejs-project-ssl/vectortowns-key.pem");
var certificate = fs.readFileSync("/opt/projetos/nodejs-project-ssl/vectortowns-cert.pem");
var credentials = {
key: privateKey,
cert: certificate
};
// other codes...
/* Controllers */
app.use(require("./controllers"));
https.createServer(credentials, app).listen(
configuration.server.port,
configuration.server.address,
function(){
logger.info("Server started: " + configuration.server.address + ":" + configuration.server.port);
});

Mes questions sont:

  1. Dois-je configurer le certificat SSL et la clé dans Nginx et NodeJS ou dans l'un d'entre eux?
  2. Si je n’en ai besoin que d’une seule, quelle serait la meilleure option (NodeJS ou Nginx)?

Je vous remercie!!

Réponses:

8 pour la réponse № 1

Utilisez Nginx (et Nginx uniquement) pour SSL, c’est lala norme. Comme vous le définissez, Nginx fonctionne comme un proxy inverse, ce qui alimentera votre programme avec des données locales non chiffrées pour les données chiffrées données sur le port 443. Par conséquent, cela ne fonctionnera pas si vous utilisez également SSL sur votre programme de noeud.