J'essaie de faire fonctionner HTTPS sur express.js pour le nœud, et je ne peux pas le comprendre.
Ceci 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);
Lorsque je l'exécute, il semble ne répondre qu'aux requêtes HTTP.
J'ai écrit une node.js
application HTTPS simple à base de vanille :
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 ne répondre aux demandes HTTPS. Notez que je ne pense pas que le toString () sur le résultat fs importe, car j'ai utilisé des combinaisons des deux et toujours pas d'es bueno.
MODIFIER POUR AJOUTER:
Pour les systèmes de production, vous feriez probablement mieux d'utiliser Nginx ou HAProxy pour proxy des requêtes vers votre application nodejs. Vous pouvez configurer nginx pour gérer les requêtes SSL et parler simplement http à votre nœud app.js.
MODIFIER POUR AJOUTER (4/6/2015)
Pour les systèmes utilisant AWS, il vaut mieux utiliser les équilibreurs de charge élastiques EC2 pour gérer la terminaison SSL et autoriser le trafic HTTP régulier vers vos serveurs Web EC2. Pour plus de sécurité, configurez votre groupe de sécurité de sorte que seul l'ELB soit autorisé à envoyer du trafic HTTP vers les instances EC2, ce qui empêchera le trafic HTTP non chiffré externe de toucher vos machines.