Heim >Web-Frontend >js-Tutorial >So konfigurieren Sie einen selbstsignierten https-Server mit node.js
Die Verwendung von Express zum Erstellen eines Frameworks in NodeJS kann als sehr einfach und bequem bezeichnet werden, aber im Allgemeinen wird der http-Server standardmäßig erstellt, was bedeutet, dass nur über das http-Protokoll auf ihn zugegriffen werden kann. Heutzutage ist https zu einem Entwicklungstrend geworden, und wir sollten dem Trend der Zeit folgen. In diesem Artikel erstellen wir ein Zertifikat mit einer selbstsignierten Methode, erstellen dann mit dem Express-Framework einen https-Server und lassen schließlich den Browser oder Client das https-Protokoll für den Zugriff verwenden.
Zuerst müssen wir die Zertifikatsdatei generieren:
(1) Generieren Sie die Schlüsseldatei mit dem privaten Schlüssel (der Pfad unten gibt den Pfad der Datei an, die Sie speichern möchten)
openssl genrsa 1024 > /pathway/private.pem
( 2) Generieren Sie die CSR-Zertifikatssignatur mit der oben generierten privaten Schlüsseldatei
openssl req -new -key /pathway/private.pem -out csr.pem
(3) Generieren Sie die Zertifikatsdatei mit der oben genannten privaten Schlüsseldatei und der CSR-Zertifikatssignatur
openssl x509 -req -days 365 -in csr.pem -signkey /pathway/private.pem -out /pathway/file.crt
zu diesem Zeitpunkt generiert Die drei Dateien lauten wie folgt:
Kopieren Sie zu diesem Zeitpunkt diese drei Dateien in Ihr NodeJS-Projektverzeichnis. Ich erstelle beispielsweise einen neuen Zertifikatsordner direkt im Projektstamm Verzeichnis und legen Sie dann die drei Dateien ab:
Ändern Sie nach Abschluss der obigen Schritte die Startdatei des Projekts. Die Startdatei lautet hier app.js, für andere lautet sie server.js Die Implementierung ist dieselbe:
var express = require('express'); // 项目服务端使用express框架 var app = express(); var path = require('path'); var fs = require('fs'); //使用nodejs自带的http、https模块 var http = require('http'); var https = require('https'); //根据项目的路径导入生成的证书文件 var privateKey = fs.readFileSync(path.join(__dirname, './certificate/private.pem'), 'utf8'); var certificate = fs.readFileSync(path.join(__dirname, './certificate/file.crt'), 'utf8'); var credentials = {key: privateKey, cert: certificate}; var httpServer = http.createServer(app); var httpsServer = https.createServer(credentials, app); //可以分别设置http、https的访问端口号 var PORT = 8000; var SSLPORT = 8001; //创建http服务器 httpServer.listen(PORT, function() { console.log('HTTP Server is running on: http://localhost:%s', PORT); }); //创建https服务器 httpsServer.listen(SSLPORT, function() { console.log('HTTPS Server is running on: https://localhost:%s', SSLPORT); }); //可以根据请求判断是http还是https app.get('/', function (req, res) { if(req.protocol === 'https') { res.status(200).send('This is https visit!'); } else { res.status(200).send('This is http visit!'); } });
Nachdem die Codeimplementierung abgeschlossen ist, können Sie zum Starten des app.js-Skripts den Befehl „node app.js“ zum Starten verwenden oder es in anderen IDEs ausführen. und greifen Sie dann im Browser darauf zu (beachten Sie, dass Express kein integriertes Modul des Systems ist und über npm installiert werden muss):
Sie können sehen, dass wir https erfolgreich für den Zugriff auf unseren Server verwendet haben. Der Chrome-Browser zeigt jedoch die Meldung „Nicht sicher“ an. Dies liegt daran, dass dieses Zertifikat von uns erstellt wurde und nicht von einer Drittorganisation überprüft wurde. Daher wird ein Hinweis angezeigt. Wie Sie ein zertifiziertes Zertifikat beantragen, stellen wir Ihnen in einem weiteren Blog vor.
Öffnen Sie den Entwicklermodus im Chrome-Browser und Sie können die Zertifikatsinformationen der aktuellen Seite auf der Sicherheitsseite sehen, wie unten gezeigt:
Klicken Sie auf „Zertifikat anzeigen“, um das Zertifikat anzuzeigen Details:
Erweitern Sie die Details und Sie können die verschiedenen Zertifikatsinformationen sehen, die wir beim Erstellen des Zertifikats eingegeben haben.
Gleichzeitig können wir Postman auch verwenden, um Client-Anfragen zu simulieren (in der tatsächlichen Entwicklung können Server-Studenten Zertifikate an Client-Studenten senden und nach einfacher Konfiguration kann eine https-Kommunikation erreicht werden):
Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie einen selbstsignierten https-Server mit node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!