Mit Node.js einen HTTPS Server mit TCP erstellen
In diesen Beitrag zeige ich euch die nötigen Schritte, wie ihr einen HTTPS Server mit Node.js und OpenSSL erstellen könnt. HTTPS ist ein Protokoll welches eine verschlüsselte Verbindung zwischen Client und Server zur Verfügung stellt.
Zuerst benötigt ihr Node.js und die neuste Version von OpenSSL. Diese könnt ihr hier runterladen: https://nodejs.org/ja und https://www.openssl.org/.
Dann erstellt ihr euch ein Verzeichnis welches aus einer Javascript Datei besteht, z.B. server.js und ein Unterverzeichnis genannt certificiates. In diesen Unterverzeichnis kommen die Schlüssel und das signierte Zertifikat rein.
Öffnet euer Terminal oder Powershell und gebt folgende Befehle nacheinander ein:
openssl genrsa -out key.pem 2048
Damit generiert ihr euch ein 2048-bit RSA Schlüsselpaar und extrahiert den private key des Servers.
openssl req -new -key key.pem -out csr.pem
Damit wird eine Zertifikatsanfragedatei erstellt. Hier werdet ihr aufgefordert sämtliche Informationen über euch oder euer Unternhemen anzugeben. Die Eingabe erfolgt im Terminal. Diese Datei muss signiert werden. Entweder von einer Zertifizierungsstelle für den produktiven gebrauch, oder ihr signiert euer Zertifikat selber während der Entwicklung.
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out cert.pem
Mit diesen Befehl signieren wir unser Zertifikat selber und es soll eine Gültigkeit von 365 Tagen haben.
Da das erstellte Zertifikat von uns selber signiert wurde, zeigen die Browser eine Sicherheitswarnung an, dass das Zertifikat ungültig ist. Die Verbindung sollte durch euren Browser blockiert werden.
Entweder man lässt sich so ein Zertifikat von einer Zertifizierungsstelle signieren damit es eine Gültigkeit hat, oder man geht in die Browsereinstellung und lässt für localhost eine Ausnahme zu.
Warnung vom Browser
Unser Zertifikat
Für Chrome gibt man in der Suchleiste chrome://flags ein und erlaubt Allow invalid certificates for resources loaded from localhost.
Die Dateien key.pem und cert.pem werden in das certificates Ordner kopiert. Anschließend startet ihr euren Node.js Server. Nun habt ihr einen HTTPS Server welchen ihr entsprechend mit Events erweitern könnt.
const express = require('express');
const https = require('https');
const cors = require('cors');
const fs = require('fs');
const { Server } = require('socket.io');
const app = express();
app.use(cors());
/**
* create a HTTPS server with certificates created with openssl
*/
const sslServer = https.createServer({
key: fs.readFileSync('./certificates/key.pem','utf-8'),
cert: fs.readFileSync('./certificates/cert.pem','utf-8')
}, app);
const io = new Server(sslServer, {
cors: {
origin: 'http://localhost:3000',
methods: ['GET','POST']
}
});
/**
* events during a TCP connection
*/
io.on('connection', (socket) => {
console.log(`User connected: ${socket.id}`);
socket.on('receive_something', (data) => {
socket.emit('some_response_event', 'some data for the client');
});
});
sslServer.listen(3001, () => {
console.log('Listening to Port 3001');
});
Leave Mit Node.js einen HTTPS Server mit TCP erstellen to:
Read more #stemgeeks posts
Best Posts From ozelot47
We have not curated any of ozelot47's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From ozelot47
- Ion Fury, Level 5: Reformation Plaza
- Eine Ampelblume im Garten
- Ion Fury, Level 4: Cultural Divide
- Ion Fury, Level 3: Fan Service
- Blaubeeren sammeln
- Ion Fury, Level 2: Trouble in Paradise
- Die Gammafunktion mit Beispiel
- Integration durch Substitution
- Eine transzendente Gleichungen lösen
- Ion Fury, Level 1: The All-Seeing Eye
- Anwendung der Lambertsche W-Funktion
- Shadow Corridor 2 雨ノ四葩 : Reaching 100% and the Gallery
- n-fache partielle Integration mit der DI-Methode
- Shadow Corridor 2 雨ノ四葩 : God Tree and true ending
- Shadow Corridor 2 雨ノ四葩 : Sea of Reminiscene and normal ending
- Teiche im Wald
- Shadow Corridor 2 雨ノ四葩 : Sea of Trees Complex
- Daten sicher unter Linux löschen
- Shadow Corridor 2 雨ノ四葩 : Glass Building
- Shadow Corridor 2 雨ノ四葩 : Shinshi Boss Fight (Deluge)