Nachdem wir im vorherigen Artikel mit OpenSSL ein kostenloses Zertifikat generiert haben, verwenden wir dieses Zertifikat nun, um die https-Dienstanforderungen unseres lokalen Knotendienstes zu implementieren. Wenn die Grundstruktur meines Knotens wie folgt ist: |----Projekt| |--- static #HTML-Dateien speichern| | |--- index.html # index.html | |--- node_modules # Abhängigkeitspaket| |--- app.js # Knoteneintragsdatei| |--- package.json | |--- .babelrc # Transformiere es6-Dateien Der Code der Datei index.html lautet wie folgt: <!DOCTYPE html> <html> <Kopf> <Meta-Zeichensatz=utf-8> <meta name="referrer" content="nie"> <title>nginx-Konfiguration https</title> </Kopf> <Text> <div> <h2>Bitte verwenden Sie https, um auf die Seite zuzugreifen</h2> </div> </body> </html> Der app.js-Code lautet wie folgt: const Koa = erfordern('koa'); const fs = erfordern('fs'); const path = require('Pfad'); const router = erfordern('koa-router')(); const koaBody = erfordern('koa-body'); const static = erforderlich('koa-static'); const app = new Koa(); router.get('/', (ctx, next) => { // Header-Typ festlegen. Wenn nicht festgelegt, wird die Seite direkt heruntergeladen ctx.type = 'html'; // Datei lesen const pathUrl = path.join(__dirname, '/static/index.html'); ctx.body = fs.createReadStream(Pfad-Url); nächste(); }); app.use(static(Pfad.join(__dirname))); app.use(router.routes()); app.use(router.allowedMethods()); app.listen(3001, () => { console.log('Server lauscht in 3001'); }); Der package.json-Code lautet wie folgt: { "Name": "Upload und Laden", "version": "1.0.0", "Beschreibung": "", "main": "app.js", "Skripte": { "Entwickler": "nodemon ./app.js" }, "Autor": "", "Lizenz": "ISC", "Abhängigkeiten": { "fs": "0.0.1-Sicherheit", "koa": "^2.7.0", "koa-body": "^4.1.0", "koa-router": "^7.4.0", "koa-send": "^5.0.0", "koa-static": "^5.0.0", "nodemon": "^1.19.0", "Pfad": "^0.12.7" } } Dann habe ich npm run dev im Stammverzeichnis des Projekts ausgeführt und konnte dann im Browser auf http://localhost:3001 zugreifen. Wenn ich jedoch über einen Domänennamen darauf zugreifen möchte, können wir den Domänennamen in der Hosts-Datei binden, z. B. xxx.abc.com. Die Hosts-Datei wird wie folgt gebunden: 127.0.0.1 xxx.abc.com Daher können wir derzeit über http://xxx.abc.com:3001/ auf die Seite zugreifen, wie unten gezeigt: Wie oben gezeigt, können wir auf die Seite zugreifen, haben aber festgestellt, dass die im Chrome-Browser angezeigte HTTP-Anforderung nicht sicher ist. Daher möchte ich zu diesem Zeitpunkt https verwenden, um darauf zuzugreifen. Die Sicherheit der Webseite ist gewährleistet. Wenn ich zu diesem Zeitpunkt jedoch nichts tue und direkt https verwende, um darauf zuzugreifen, funktioniert es nicht, z. B. die Adresse: https://xxx.abc.com:3001. Wie in der folgenden Abbildung gezeigt: Wir wissen, dass bei Verwendung von https für den Zugriff im Allgemeinen ein Sicherheitszertifikat erforderlich ist. Daher besteht unsere aktuelle Aufgabe darin, nginx zu verwenden, um Dinge wie Sicherheitszertifikate zu konfigurieren, und dann https zu verwenden, um auf die Webseite zuzugreifen, um unser Ziel zu erreichen. nginx konfiguriert den https-Dienst 1. Rufen Sie zunächst das Verzeichnis nginx auf und verwenden Sie den Befehl: cd /usr/local/etc/nginx. Erstellen Sie dann in diesem Verzeichnis einen Zertifikatsordner, um die Zertifikatsdatei zu speichern. 2. Dann müssen wir die zertifikatsbezogenen Dateien, wie die Dateien server.crt und server.key, in das Verzeichnis cert kopieren. Beispielsweise die folgende Zertifikatsdatei: Informationen zum Speichern der oben genannten Zertifikate finden Sie in meinem vorherigen Artikel Verwenden von OpenSSL zum Speichern kostenloser Zertifikate Verschiebebefehl: mv server.key /usr/local/etc/nginx/cert, verschiebt beispielsweise die Dateien server.key und server.crt in das Verzeichnis /usr/local/etc/nginx/cert. Wie in der folgenden Abbildung dargestellt: Anschließend prüfen wir das Verzeichnis /usr/local/etc/nginx/cert und finden folgende Dateien: 3. Nginx-Konfiguration Der Nginx-Konfiguration muss der folgende Code hinzugefügt werden: Server { hören Sie 443 SSL; Servername xxx.abc.com; ssl on; //Dieses Konfigurationselement muss ssl_certificate cert/server.crt entfernen; SSL-Zertifikatsschlüssel cert/server.key; /* Legen Sie den Typ und die Größe des SSL/TLS-Sitzungscache fest. Wenn dieser Parameter gesetzt ist, wird er normalerweise gemeinsam genutzt und der eingebaute Parameter kann die Speicherfragmentierung festlegen. Der Standardwert ist „none“, was „off“ ähnelt und den Cache deaktiviert. Beispielsweise bedeutet shared:SSL:10m, dass alle meine Nginx-Arbeitsprozesse den SSL-Sitzungscache gemeinsam nutzen. Auf der offiziellen Website heißt es, dass 1M etwa 4.000 Sitzungen speichern kann. */ ssl_session_cache geteilt:SSL:1m; // Der Client kann die Ablaufzeit der SSL-Parameter im Sitzungscache wiederverwenden. Die Standardablaufzeit von 5 Minuten im Intranetsystem ist zu kurz. Sie kann auf 30 Minuten oder sogar 4 Stunden eingestellt werden. SSL-Sitzungszeitüberschreitung 5 Min. /* Wählen Sie die Verschlüsselungssammlung aus. Verschiedene Browser unterstützen möglicherweise unterschiedliche Sammlungen (und in unterschiedlicher Reihenfolge). Das hier angegebene Format ist dasjenige, das die OpenSSL-Bibliothek erkennen kann. Sie können die unterstützten Algorithmen anzeigen, indem Sie openssl -v cipher 'RC4:HIGH:!aNULL:!MD5' verwenden (gefolgt vom von Ihnen angegebenen Suite-Verschlüsselungsalgorithmus). */ ssl_ciphers HOCH:!aNULL:!MD5; // Geben Sie beim Festlegen des ausgehandelten Verschlüsselungsalgorithmus der Verschlüsselungssuite unseres Servers Vorrang vor der Verschlüsselungssuite des Client-Browsers. ssl_prefer_server_ciphers ein; Standort / { Proxy-Passwort http://localhost:3001; } } Hinweis: Wie oben erwähnt, muss das Konfigurationselement „SSL On;“ entfernt werden. Wenn es wie oben konfiguriert ist, melde ich einen Fehler, wenn ich den nginx-Befehl neu starte, wie unten gezeigt: SSL: Fehler: 06065064: Digital Envelope-Routinen: EVP_DecryptFinal_ex: fehlerhafte Entschlüsselung Fehler: 0906A065: PEM-Routinen: PEM_do_header: fehlerhafte Entschlüsselung Ähnlich diesem Fehler, suchen Sie dann auf Baidu nach diesem Fehler und beheben Sie ihn mit der folgenden Methode: Gehen Sie in das Verzeichnis: cd /usr/local/etc/nginx/cert und führen Sie die folgenden beiden Codezeilen aus: cp server.key server.key.org openssl rsa -in server.key.org -out server.key Wie unten dargestellt: Sie können sich die Seite ansehen, die aus der Baidu-Suche kommt Als ich dann mit dem Neustart von nginx fortfuhr, stellte ich fest, dass immer noch ein Fehler gemeldet wurde. Die Fehlerinformationen lauteten wie folgt:
Entfernen Sie dann weiterhin das Konfigurationselement „ssl on;“, das möglicherweise mit der Version von nginx zusammenhängt Ich habe vor Kurzem ein Upgrade auf nginx 1.15 durchgeführt. Nach dem erneuten Laden meldeten alle Websites mit SSL diese Warnung. Ich habe viele Informationen überprüft und schließlich eine entsprechende englische Beschreibung auf GitHub gefunden: (https://github.com/voxpupuli/puppet-nginx/issues/1224). Mein Englisch ist nicht gut, aber die allgemeine Bedeutung sollte sein, dass für nginx 1.15 und spätere Versionen kein SSL mehr erforderlich ist. Ich ging zu nginx.conf und löschte SSL und lud es dann neu. Tatsächlich gab es keinen Alarm. Es gibt jetzt kein Problem mehr bei der Verwendung. Ich habe es falsch verstanden. Ich sollte SSL einschalten, um 443 SSL zu hören. Jetzt fahre ich mit dem Neustart von nginx fort und alles wird wie unten gezeigt funktionieren: Nach der obigen Konfiguration können wir jedoch nicht direkt den Domänennamen https://xxx.abc.com/ verwenden, um darauf zuzugreifen. Wir müssen auch das zuvor generierte client.crt-Zertifikat im Browser installieren. Die Schritte für das Mac-System lauten wie folgt: 1. Klicken Sie wie unten gezeigt auf den Launcher. Wie unten dargestellt: 2. Suchen Sie nach Schlüsselbundverwaltung und klicken Sie darauf, wie unten gezeigt 3. Gehen Sie zur Zertifikatsseite und ziehen Sie unser vorheriges client.crt-Zertifikat in das Zertifikat. Das zuvor generierte client.crt-Zertifikat lautet beispielsweise wie folgt: 4. Klicken Sie mit der rechten Maustaste auf mein Zertifikat und dann auf „Profil anzeigen“, um die Seite mit den Zertifikatsdetails aufzurufen. Wie in der folgenden Abbildung dargestellt: 5. Wählen Sie nach dem Aufrufen der Seite bei Verwendung des Zertifikats „Immer vertrauen“ aus, wie unten gezeigt: 6. Beenden Sie dann den Vorgang. Möglicherweise müssen Sie das Einschaltkennwort des Computers eingeben. Nach der Eingabe wird es automatisch gespeichert. Dann können wir darauf zugreifen, indem wir im Browser die Seite https://xxx.abc.com/ aufrufen. Wie unten dargestellt: Dann klicken wir auf „Weiter“, um die Seite zu sehen, wie unten dargestellt: Wie oben gezeigt wird nginx + Zertifikat verwendet, um den lokalen Knoten-HTTPS-Dienst zu implementieren. Obwohl https wie oben beschrieben aufgerufen werden kann, wird vor https dennoch der Text „unsafe“ angezeigt, wie in der folgenden Abbildung zu sehen: Der mögliche Grund ist, dass es sich bei dem Zertifikat um ein selbst erstelltes Zertifikat und nicht um ein Drittanbieter-Zertifikat handelt. Den genauen Grund kenne ich im Moment nicht, aber zumindest können wir jetzt https verwenden, um auf unser Projekt zuzugreifen. Quellcode zum Starten eines einfachen Node-Dienstes auf GitHub Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: So schreiben Sie speichereffiziente Anwendungen mit Node.js
>>: Übersicht über MySQL-Statistiken
Vorwort In vielen Fällen werden wir virtuelle Mas...
Inhaltsverzeichnis Natives JS So senden Sie eine ...
Verwenden Sie JS, um ein zufälliges Namensaufrufs...
Der MySQL-Volltextindex ist ein spezieller Index,...
<br />Ich habe festgestellt, dass viele Leut...
Versionskette In den Tabellen der InnoDB-Engine g...
Inhaltsverzeichnis 1. Entkoppelte Zuweisung von A...
Antwort von Stackflow: Einfaches <br> genügt...
Inhaltsverzeichnis Ergebnisse erzielen Wissensres...
Als ich die kürzlich beliebte WeChat-Tap-Funktion...
Dieser Artikel beschreibt anhand eines Beispiels ...
Wie unten dargestellt: #!/usr/bin/env python3.5 p...
Inhaltsverzeichnis Einführung Nachfolgend sehen S...
Guten Morgen allerseits, ich habe meinen Artikel ...
Jeder ist wahrscheinlich mit dem Auswahl-Dropdown...