Я пытаюсь заставить 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-трафика на ваши компьютеры.