Я пытаюсь заставить HTTPS работать над express.js для node, и я не могу понять это.
Это мой код 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-запросы.
Я написал простое приложение для HTTPS на основе villa node.js
:
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 на node app.js.
ИЗМЕНИТЬ ДОБАВИТЬ (4/6/2015)
Для систем, использующих AWS, вам лучше использовать EC2 Elastic Load Balancers для обработки SSL-терминации и разрешить регулярный HTTP-трафик на ваши веб-серверы EC2. Для дополнительной безопасности настройте свою группу безопасности таким образом, чтобы только ELB разрешал отправлять HTTP-трафик в экземпляры EC2, что предотвратит попадание внешнего незашифрованного HTTP-трафика на ваши компьютеры.