Habilitando HTTPS en express.js
Estoy intentando que HTTPS funcione en express.js para nodo, y no puedo resolverlo.
Este es miapp.js
código.
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);
Cuando lo ejecuto, parece que solo responde a solicitudes HTTP.
Escribí vainilla simplenode.js
aplicación HTTPS basada:
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);
Y cuando corro esta aplicación,hace responder a las solicitudes de HTTPS. Tenga en cuenta que no creo que la toString () en el resultado de fs importe, ya que he usado combinaciones de ambos y todavía no es bueno.
EDITAR PARA AÑADIR:
Para los sistemas de producción, probablemente sea mejor usar Nginx o HAProxy para enviar solicitudes a su aplicación nodejs. Puede configurar nginx para manejar las solicitudes ssl y simplemente hablar http a su nodo app.js.
EDITAR A AGREGAR (4/6/2015)
Para los sistemas que usan AWS, es mejor usar los equilibradores de carga elásticos EC2 para manejar la terminación SSL y permitir el tráfico HTTP regular a sus servidores web EC2. Para mayor seguridad, configure su grupo de seguridad de manera que solo el ELB pueda enviar tráfico HTTP a las instancias de EC2, lo que evitará que el tráfico HTTP externo sin cifrar llegue a sus máquinas.