Ich versuche, HTTPS für Express.js für Node zum Laufen zu bringen, und ich kann es nicht herausfinden.
Das 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 es ausführe, scheint es nur auf HTTP-Anfragen zu antworten.
Ich habe eine einfache Vanille- node.js
basierte HTTPS-App geschrieben:
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 App laufen, es tut reagieren auf HTTPS - Anfragen. Beachten Sie, dass ich nicht denke, dass toString () für das fs-Ergebnis von Bedeutung ist, da ich Kombinationen von beiden verwendet habe und immer noch kein es bueno.
BEARBEITEN ZUM HINZUFÜGEN:
Für Produktionssysteme ist es wahrscheinlich besser, Nginx oder HAProxy zu verwenden, um Anforderungen an Ihre nodejs-App zu senden. Sie können nginx so einrichten, dass es die SSL-Anforderungen verarbeitet, und einfach http mit Ihrem Knoten app.js sprechen.
BEARBEITEN ZUM HINZUFÜGEN (06.04.2015)
Für Systeme, die AWS verwenden, ist es besser, EC2 Elastic Load Balancers zu verwenden, um die SSL-Beendigung zu handhaben und regelmäßigen HTTP-Verkehr zu Ihren EC2-Webservern zuzulassen. Richten Sie Ihre Sicherheitsgruppe für weitere Sicherheit so ein, dass nur die ELB HTTP-Verkehr an die EC2-Instanzen senden darf, um zu verhindern, dass externer unverschlüsselter HTTP-Verkehr auf Ihre Computer gelangt.