527 votes

Activation de HTTPS sur express.js

Je vais essayer d'obtenir HTTPS travail sur express.js pour le nœud, et je ne peux pas le comprendre.

C'est mon app.js code.

var express = require('express');
var fs = require('fs');

var privateKey = fs.readFileSync('sslcert/server.key');
var certificate = fs.readFileSync('sslcert/server.crt');

var credentials = {key: privateKey, cert: certificate};


var app = express.createServer(credentials);

app.get('/', function(req,res) {
    res.send('hello');
});

app.listen(8000);

Quand je le lance, il semble être la seule à répondre à des requêtes HTTP.

J'ai écrit simple à la vanille node.js HTTPS basée sur l'app:

var   fs = require("fs"),
      http = require("https");

var privateKey = fs.readFileSync('sslcert/server.key').toString();
var certificate = fs.readFileSync('sslcert/server.crt').toString();

var credentials = {key: privateKey, cert: certificate};

var server = http.createServer(credentials,function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
});

server.listen(8000);

Et quand je lance cette application, il n' répondre à des requêtes HTTPS. Notez que je ne pense pas que le toString() sur la fs résultat compte, comme je l'ai déjà utilisé des combinaisons des deux, et toujours pas de es bueno.

MODIFIER POUR AJOUTER:

Pour les systèmes de production, vous êtes probablement mieux d'utiliser Nginx ou HAProxy demandes de proxy pour votre application nodejs. Vous pouvez configurer nginx pour gérer les demandes ssl et juste parler de http à votre nœud app.js.

819voto

codename- Points 1712

Si vous avez la dernière version de express (3.x), vous devez utiliser cette syntaxe:

 var fs = require('fs');
var http = require('http');
var https = require('https');
var privateKey  = fs.readFileSync('sslcert/server.key', 'utf8');
var certificate = fs.readFileSync('sslcert/server.crt', 'utf8');

var credentials = {key: privateKey, cert: certificate};
var express = require('express');
var app = express();

// your express configuration here

var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);

httpServer.listen(80);
httpsServer.listen(443);
 

De cette manière, vous fournissez un middleware express au serveur natif http / https.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X