Включение HTTPS на express.js

Я пытаюсь заставить HTTPS работать с express.js для узла и не могу понять.

Это мой код app.js.

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);

Когда я запускаю его, кажется, что он отвечает только на HTTP-запросы.

Я написал простое ванильное node.jsприложение на основе HTTPS :

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);

. И когда я запускаю это приложение, оно действительно отвечает на HTTPS-запросы. Обратите внимание, что я не думаю, что toString ()в результате fs имеет значение, так как я использовал комбинации обоих и все еще не es bueno.


ИЗМЕНИТЬ, ЧТОБЫ ДОБАВИТЬ:

Для производственных систем вам, вероятно, лучше использовать Nginx или HAProxy для прокси-запросов к вашему приложению nodejs. Вы можете настроить nginx для обработки запросов ssl и просто говорить http с вашим узлом app.js.

ИЗМЕНИТЬ, ДОБАВИТЬ (06.04.2015)

Для систем, использующих AWS, вам лучше использовать EC2 Elastic Load Balancers для обработки SSL-терминации и разрешить регулярный HTTP-трафик на ваши веб-серверы EC2. Для дополнительной безопасности настройте группу безопасности таким образом, чтобы только ELB разрешалось отправлять HTTP-трафик на экземпляры EC2, что предотвратит попадание внешнего незашифрованного HTTP-трафика на ваши компьютеры.


358
задан Alan 10 September 2015 в 06:52
поделиться