In der heutigen digitalen Ära, in der Datenschutz und Sicherheit oberste Priorität haben, ist die Gewährleistung einer sicheren Kommunikation zwischen Webanwendungen und ihren Nutzern von entscheidender Bedeutung. Hier kommt das TLS-Zertifikat zum Einsatz. In diesem Tutorial werden wir einen Blick darauf werfen, warum ein TLS-Zertifikat für eine Webanwendung unerlässlich ist und wie man es mit OpenSSL erstellt und selbst signiert.
Warum ein TLS-Zertifikat?
Die Verwendung eines TLS-Zertifikats ist essenziell, um die Übertragung von sensiblen Daten zwischen einem Webserver und einem Client zu schützen. Ohne eine verschlüsselte Verbindung besteht das Risiko, dass vertrauliche Informationen während der Übertragung abgefangen oder manipuliert werden können. TLS (Transport Layer Security) sorgt dafür, dass die Daten sicher zwischen den Parteien übermittelt werden.
Voraussetzung
Ich verwende einen Raspberry Pi 2B mit Debian Version 12.
Stelle sicher, dass du bereits als normaler Benutzer über PuTTY oder direkt auf dem Debian-System angemeldet bist.
Installation
Die Grundlage für die Erstellung eines TLS-Zertifikats liegt in der Installation von OpenSSL. Dieses Tool ist oft standardmäßig auf vielen Systemen vorhanden. Auch so bei meiner Debian-Distribution war es bereits installiert.
Um sicherzustellen, dass es auch bei dir installiert ist, führe den folgenden Befehl aus:
openssl version
Code-Sprache: Bash (bash)
Wird dir die Version von OpenSSL angezeigt, ist es schon auf deinem System installiert
Sollte es noch nicht auf deinem System vorhanden sein, kannst du es wie folgt installieren:
sudo apt update
sudo apt install openssl -y
Code-Sprache: Bash (bash)
Es ist auch möglich OpenSSL selber zu kompilieren. Wie das geht, ist auf der Seite How to Install OpenSSL on Debian 12 – Its Linux FOSS beschrieben.
Generierung eines privaten Schlüssels
Bei der Erstellung eines TLS-Zertifikats ist der private Schlüssel unerlässlich, da er eine entscheidende Funktion bei der Gewährleistung der Sicherheit der Übertragung von sensiblen Informationen spielt. Er wird dazu verwendet, verschlüsselte Daten zu entschlüsseln, die mit dem zugehörigen öffentlichen Schlüssel erstellt wurden. Dieser Prozess der asymmetrischen Verschlüsselung ermöglicht es, vertrauliche Daten sicher zwischen verschiedenen Parteien auszutauschen.
Wichtig: Der private Schlüssel ist geheim und sollte niemals öffentlich geteilt werden.
Um Sicherheit und Effizienz zu gewährleisten, generieren wir einen RSA Schlüssel mit 2048-Bit Länge.
In der Regel sind 2048-Bit-Schlüssel für viele Anwendungsfälle ausreichend sicher und effizient. 4096-Bit-Schlüssel können in Szenarien mit besonders hohen Sicherheitsanforderungen relevant sein, aber sie erfordern mehr Rechenleistung bei der Verarbeitung.
openssl genpkey -algorithm RSA -out private.key -pkeyopt rsa_keygen_bits:2048
Code-Sprache: Bash (bash)
Generierung der Zertifikatsanfrage
Als nächstes müssen wir eine Zertifikatsanfrage erstellen. Diese wird benutzt, um ein digitales Zertifikat von einer Zertifizierungsstelle (CA) zu erhalten. Sie enthält öffentliche Schlüsselinformationen und Identitätsdaten. In unserem Fall sind wir die Zertifizierungsstelle und werden daraus ein Zertifikat erstellen.
openssl req -new -key private.key -out certification_request.csr
Code-Sprache: Bash (bash)
Generierung des TLS-Zertifikats
Zum Schluss müssen wir noch das Zertifikat erstellen. Dieses wird dann auf der Webanwendung installiert, und wir können TLS nutzen. Wir erstellen unser Zertifikat direkt für 10 Jahre.
openssl x509 -req -in certification_request.csr -signkey private.key -out certificate.crt -days 3653
Code-Sprache: Bash (bash)
Beachte jedoch, dass dies für Test- und Entwicklungszwecke gedacht ist. In Produktionsumgebungen wird empfohlen, die Standardrichtlinien für Zertifikatsgültigkeitsdauer zu beachten und möglicherweise kürzere Gültigkeitsdauern zu verwenden.
Wenn dir meine Arbeit gefällt, würde ich mich über einen Kaffee freuen