Ich versuche, HTTPS auf express.js für Knoten zu erhalten, und ich kann es nicht herausfinden.
Dies ist mein app.js
Code.
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);
Wenn ich ihn ausführe, scheint er nur auf HTTP-Anfragen zu reagieren.
Ich schrieb einfache Vanille node.js
basierte HTTPS-Anwendung:
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);
Und wenn ich diese Anwendung ausführe, dann tut auf HTTPS-Anfragen reagieren. Beachten Sie, dass ich nicht glaube, dass die toString() auf das fs-Ergebnis zählt, da ich Kombinationen von beiden und immer noch keine es bueno verwendet habe.
ÄNDERUNG ZUM ZUSATZ:
Für Produktionssysteme ist es wahrscheinlich besser, Nginx oder HAProxy als Proxy für Anfragen an Ihre Nodejs-Anwendung zu verwenden. Sie können Nginx so einrichten, dass es die SSL-Anfragen bearbeitet und nur http zu Ihrer nodejs-App spricht.
BEARBEITEN, UM HINZUZUFÜGEN (4/6/2015)
Für Systeme, die AWS nutzen, ist es besser, EC2 Elastic Load Balancers zu verwenden, um SSL-Termination zu handhaben und regulären HTTP-Verkehr zu Ihren EC2-Webservern zu ermöglichen. Für noch mehr Sicherheit richten Sie Ihre Sicherheitsgruppe so ein, dass nur der ELB HTTP-Datenverkehr an die EC2-Instanzen senden darf, wodurch verhindert wird, dass externer unverschlüsselter HTTP-Datenverkehr auf Ihre Rechner gelangt.