Я намагаюся змусити 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.06.2015)
Для систем із використанням AWS вам краще використовувати EC2 Elastic Load Balanceers для обробки SSL-припинення та дозволити регулярний трафік HTTP на ваші веб-сервери EC2. Для подальшої безпеки налаштуйте свою групу безпеки таким чином, щоб лише ELB було дозволено надсилати трафік HTTP до екземплярів EC2, що запобіжить потраплянню зовнішнього незашифрованого HTTP-трафіку на ваші машини.