Wie erstellt man mit einem SSL-Schlüssel und einem Zertifikat einen HTTPS-Dienst?
Antworten
Zu viele Anzeigen?Le site Express-API-Dokument sagt dies ziemlich deutlich aus.
Zusätzlich 本答 gibt die Schritte zur Erstellung eines selbstsignierten Zertifikats an.
Ich habe einige Kommentare und einen Auszug aus der Node.js HTTPS-Dokumentation :
var express = require('express');
var https = require('https');
var http = require('http');
var fs = require('fs');
// This line is from the Node.js HTTPS documentation.
var options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.cert')
};
// Create a service (the app object is just a callback).
var app = express();
// Create an HTTP service.
http.createServer(app).listen(80);
// Create an HTTPS service identical to the HTTP service.
https.createServer(options, app).listen(443);
Für Node 0.3.4 und höher bis hin zum aktuellen LTS (v16 zum Zeitpunkt dieser Bearbeitung), https://nodejs.org/api/https.html#httpscreateserveroptions-requestlistener enthält den gesamten Beispielcode, den Sie benötigen:
const https = require(`https`);
const fs = require(`fs`);
const options = {
key: fs.readFileSync(`test/fixtures/keys/agent2-key.pem`),
cert: fs.readFileSync(`test/fixtures/keys/agent2-cert.pem`)
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end(`hello world\n`);
}).listen(8000);
Beachten Sie, dass Sie bei der Verwendung von Let's Encrypt-Zertifikaten mit dem certbot Tool wird der private Schlüssel als privkey.pem
und das Zertifikat heißt fullchain.pem
:
const certDir = `/etc/letsencrypt/live`;
const domain = `YourDomainName`;
const options = {
key: fs.readFileSync(`${certDir}/${domain}/privkey.pem`),
cert: fs.readFileSync(`${certDir}/${domain}/fullchain.pem`)
};
Ich habe diese Frage beim Googeln nach "node https" gefunden, aber das Beispiel in der akzeptierte Antwort ist sehr alt und stammt aus dem docs der aktuellen (v0.10) Version von Node, sollte es wie folgt aussehen:
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8000);
Die obigen Antworten sind gut, aber mit Express und Node wird das gut funktionieren.
Da Express die App für Sie erstellt, werde ich das hier auslassen.
var express = require('express')
, fs = require('fs')
, routes = require('./routes');
var privateKey = fs.readFileSync('cert/key.pem').toString();
var certificate = fs.readFileSync('cert/certificate.pem').toString();
// To enable HTTPS
var app = module.exports = express.createServer({key: privateKey, cert: certificate});
Das minimale Setup für einen HTTPS-Server in Node.js würde etwa so aussehen:
var https = require('https');
var fs = require('fs');
var httpsOptions = {
key: fs.readFileSync('path/to/server-key.pem'),
cert: fs.readFileSync('path/to/server-crt.pem')
};
var app = function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}
https.createServer(httpsOptions, app).listen(4433);
Wenn Sie auch http-Anfragen unterstützen wollen, müssen Sie nur diese kleine Änderung vornehmen:
var http = require('http');
var https = require('https');
var fs = require('fs');
var httpsOptions = {
key: fs.readFileSync('path/to/server-key.pem'),
cert: fs.readFileSync('path/to/server-crt.pem')
};
var app = function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}
http.createServer(app).listen(8888);
https.createServer(httpsOptions, app).listen(4433);
- See previous answers
- Weitere Antworten anzeigen
2 Stimmen
Ich habe restify.js anstelle von express.js, aber die Idee ist die gleiche. So habe ich einen node.js-Server eingerichtet, der sowohl HTTP als auch HTTPS akzeptiert qugstart.com/blog/node-js/
2 Stimmen
Ohne Express und mit der neuesten Version von Node - siehe hier: stackoverflow.com/a/21809393/388026
1 Stimmen
Was ist aus dieser Frage geworden? Aus den Antworten geht hervor, dass es ursprünglich um express.js ging.
0 Stimmen
Ist es trivial, ein gültiges, selbstsigniertes SSL-Zertifikat zu erstellen und einen HTTPS-Server zu starten, nur ein wenige Schritte
4 Stimmen
Es ist ein bisschen spät, aber wenn jemand eine vollständige nodejs https-Tutorial benötigen, können hier finden: programmerblog.net/nodejs-https-server
0 Stimmen
Dies könnte hilfreich sein kontextneutral.de/story/
0 Stimmen
Das hat funktioniert: stackoverflow.com/a/60947658/9585130
0 Stimmen
Wenn Sie nur testen wollen github.com/zoutepopcorn/localhapp