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.

Respuestas a la pregunta(7)

Su respuesta a la pregunta