Próbuję zmusić HTTPS do pracy na express.js dla węzła i nie mogę tego rozgryźć.
To jest mój app.js
kod.
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);
Po uruchomieniu wydaje się odpowiadać tylko na żądania HTTP.
Napisałem prostą node.js
aplikację HTTPS opartą na wanilii :
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);
I kiedy uruchomić tę aplikację, to nie reagować na żądania HTTPS. Zauważ, że nie sądzę, że toString () na wyniku fs ma znaczenie, ponieważ użyłem kombinacji obu i wciąż nie ma es bueno.
EDYTUJ, ABY DODAĆ:
W przypadku systemów produkcyjnych prawdopodobnie lepiej jest używać Nginx lub HAProxy do przesyłania żądań proxy do aplikacji nodejs. Możesz skonfigurować nginx do obsługi żądań ssl i po prostu mówić http do twojego app.js.
EDYTUJ, ABY DODAĆ (4/6/2015)
W przypadku systemów korzystających z AWS lepiej jest używać EC2 Elastic Load Balancers do obsługi terminacji SSL i zezwalać na regularny ruch HTTP do serwerów sieciowych EC2. Aby zwiększyć bezpieczeństwo, skonfiguruj swoją grupę zabezpieczeń tak, aby tylko ELB mógł wysyłać ruch HTTP do instancji EC2, co zapobiegnie uderzeniu zewnętrznego nieszyfrowanego ruchu HTTP w twoje maszyny.