Estoy tratando de hacer que HTTPS funcione en express.js para el nodo, y no puedo entenderlo.
Este es mi app.js
codigo.
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 las solicitudes HTTP.
Escribí una node.js
aplicación HTTPS simple basada en vainilla :
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, se hace responder a solicitudes HTTPS. Tenga en cuenta que no creo que toString () en el resultado fs importe, ya que he usado combinaciones de ambos y todavía no es bueno.
EDITAR PARA AGREGAR:
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 PARA AÑADIR (4/6/2015)
Para los sistemas que usan AWS, es mejor usar EC2 Elastic Load Balancers 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 modo que solo el ELB pueda enviar tráfico HTTP a las instancias EC2, lo que evitará que el tráfico HTTP externo no encriptado llegue a sus máquinas.