In diesem Artikel wird erläutert, wie Sie Ihren Express.js-Server mit HTTPS mithilfe von Let's Encrypt-Zertifikaten sichern und die Sicherheit mit HSTs und stärkeren Diffie-Hellman-Parametern weiter verbessern.
In der heutigen digitalen Landschaft ist HTTPS nicht verhandelbar. Es wird von Benutzern erwartet, ein Google -Ranking -Faktor und Browser markieren aktiv es, wonach Websites es fehlen. Dieses Tutorial zeigt, dass es Ihrer Express.js -Anwendung ein Let's Encrypt -Zertifikat hinzufügt. Die kundenseitige Sicherheit ist jedoch ebenso wichtig. Wir werden die Durchsetzung verschlüsselter Verbindungen zu externen Servern untersuchen, auch wenn sie standardmäßig nicht aktiviert sind. (Hinweis: Für Nginx Reverse Proxy SSL -Setup mit einer Knoten -App siehe unseren Quick Tipp, „Nginx und SSL mit node.js“.)
Key Takeaways:
https
Modul ermöglicht eine sichere Client -Kommunikation. Dies erfordert SSL -Zertifikate, die leicht erhältlich und frei von Let's Encrypt. https überall:
Der HTTP/2 -Standard (RFC 7540, Mai 2015) schreibt die Verschlüsselung vor und macht HTTPS zum Standard. Dies steigert die Akzeptanz von HTTPS. Aus der Sicht eines Browsers beinhaltet das Erreichen der IP -Ebene die folgenden Schichten:
https ist HTTP über SSL/TLS, wodurch HTTP -Regeln erbt, während: Authentifizierung über Schlüssel und Zertifikate; verschlüsselte, asymmetrische Kommunikation für Privatsphäre und Vertraulichkeit; und Datenintegrität durch manipulationssicheres Getriebe. Im Gegensatz zu früheren Wahrnehmungen ist der SSL/TLS-Overhead auch für groß angelegte Operationen wie Google minimal (unter 1% CPU-Last und 2% Netzwerkaufwand). Wie Ilya Grigorik treffend feststellte, ist der einzige Leistungsengpass nicht ausreichend HTTPS -Verwendung.
TLS 1.3 ist die neueste Version, die SSL 3.0 (wenn auch nicht interoperabel). Es verwendet drei verschlüsselte Kanäle: Zertifikatsketten, Kryptographie für öffentliche Schlüssel für den Schlüsselaustausch und symmetrische Kryptographie für die Datenübertragung. SHA2 oder stärkere Hashing -Algorithmen werden empfohlen (SHA1 ist veraltet). Wachstum von Daten verletzt die Bedarf an Kraftstoffnutzern nach verbesserter Online -Sicherheit. Die HTTPS überall durch die Browser -Erweiterung des EFF setzt die Verschlüsselung nach Möglichkeit durch, einschließlich Umschreiben von Anforderungen für Websites mit teilweise HTTPS -Unterstützung oder Blockierung von HTTP vollständig.
Grundlegende Kommunikation:
Zertifikatvalidierung beinhaltet die Überprüfung des Signatures, des Ablaufdatums, der vertrauenswürdigen Stammkette und des Widerrufstatus. Vertrauenswürdige Zertifikatbehörden (CAS) geben Zertifikate aus; Kompromiss einer CA widerruft alle Zertifikate. Die HTTPS -Handshake -Sequenz: Client -Initialisierung, Zertifikat und Schlüsselaustauschnachricht aus dem Server, der Client -Taste -Austausch- und Cipher -Spezifikation, Serverbestätigung und Handshake -Schließung.
Diese Sequenz ist unabhängig von HTTP; HTTPS verändert nur die Sockelhandhabung. HTTP -Anforderungen bleiben bestehen, aber der Socket verschlüsselt Inhalt (Header und Körper).
https Implementierung in Express.js:
node.js verwendet das https
-Modul für sichere Kommunikation. Seine Verwendung spiegelt das http
-Modul wider:
const https = require("https"), fs = require("fs"); const options = { key: fs.readFileSync("/srv/www/keys/my-site-key.pem"), cert: fs.readFileSync("/srv/www/keys/chain.pem") }; const app = express(); app.use((req, res) => { res.writeHead(200); res.end("hello world\n"); }); app.listen(8000); https.createServer(options, app).listen(8080);
Ersetzen Sie /srv/www/keys/my-site-key.pem
und /srv/www/keys/chain.pem
durch Ihre generierten Zertifikatpfade (unten erläutert).
Zertifikaterzeugung mit certbot:
certbot automatisiert let let lass Encrypt -Zertifikaterzeugung und -verwaltung. Installieren Sie Certbot (Anweisungen variieren je nach Betriebssystem; In diesem Beispiel wird Ubuntu verwendet):
sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository universe sudo add-apt-repository ppa:certbot/certbot sudo apt-get update
Das Plugin certonly --webroot
vereinfacht die Zertifikaterzeugung und -überprüfung. Lauf:
certbot certonly --webroot -w /var/www/example/ -d www.example.com -d example.com
Geben Sie Ihre E -Mail -Adresse an. Die Ausgabe zeigt Pfade zu Ihren privaten Schlüssel- und Zertifikatendateien. Verwenden Sie diese im obigen options
Objekt.
Sicherheitsverbesserungen:
const helmet = require("helmet"); // ... app.use(helmet());
openssl dhparam -out /var/www/example/sslcert/dh-strong.pem 2048
add dhparam
zum options
Objekt:
const options = { // ... dhparam: fs.readFileSync("/var/www/example/sslcert/dh-strong.pem") };
Schlussfolgerung:
https ist wesentlich. Node.js bietet robuste SSL/TLS -Optionen für sichere Webanwendungen. Lassen Sie uns das Zertifikatmanagement vereinfachen, während HSTS und stärkere DH -Parameter die Sicherheit weiter verbessern.
Der FAQS -Abschnitt wurde für die Kürze weggelassen, die bereitgestellten Informationen deckt jedoch die Kernaspekte des Originaltextes ab.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie SSL/TLS mit node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!