Sto cercando di far funzionare HTTPS su express.js per il nodo e non riesco a capirlo.
Questo è il mio app.js
codice
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);
Quando lo eseguo, sembra rispondere solo alle richieste HTTP.
Ho scritto node.js
un'app HTTPS semplice basata su vaniglia :
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);
E quando si esegue questa applicazione, si fa rispondere a richieste HTTPS. Nota che non penso che toString () sul risultato fs sia importante, dato che ho usato combinazioni di entrambi e ancora no es bueno.
MODIFICA DA AGGIUNGERE:
Per i sistemi di produzione, probabilmente stai meglio usando Nginx o HAProxy per inoltrare richieste all'app del tuo nodojs. Puoi configurare nginx per gestire le richieste ssl e semplicemente parlare http al tuo nodo app.js.
MODIFICA DA AGGIUNGERE (06/04/2015)
Per i sistemi che utilizzano AWS, è meglio utilizzare i bilanciatori di carico elastici EC2 per gestire la terminazione SSL e consentire il traffico HTTP regolare ai server Web EC2. Per ulteriore sicurezza, imposta il tuo gruppo di sicurezza in modo tale che solo all'ELB sia consentito inviare traffico HTTP alle istanze EC2, impedendo al traffico HTTP esterno non crittografato di colpire i tuoi computer.