TLS (Transport Layer Security)
TLS ist ein Protokoll, das die Sicherheit von Webanwendungen sicherstellt.
Es soll die sichere Kommunikation zwischen Client und Server gewährleisten, durch Verschlüsselung, Integrität und Authentifizierung.
TLS-Handshake
Der TLS-Handshake ist der Prozess, bei dem der Client und der Server ein gemeinsames Verschlüsselungsschlüsselpaar erstellen.

Ablauf
Client Hello
- Der Client sendet einen
Client Helloan den Server mit folgenden Informationen.- Unterstützte TLS-Versionen
- Verschlüsselungsmethode
- Zufällige Zahl (Random Number)
Server Hello
- Der Server antwortet mit einem
Server Hellodem Client.- Ausgewählte TLS-Version
- Verschlüsselungsmethode
- Zufällige Zahl (Random Number)
Certificate
- Der Server sendet sein TLS-Zertifikat zur Authentifizierung an den Client.
Client Key Exchange
- Der Client generiert einen geheimen Schlüssel und sendet diesen an den Server.
Schlüsselableitung
- Client und Server verwenden das Pre-Master-Secret um einen Master-Secret zu erstellen.
- Dieser wird dann für die symmetrische Verschlüsselung verwendet.
Change Cipher Spec
- Beide Parteien signalisieren, dass sie die neu verhandelte Verschlüsselungsmethode verwenden.
- Ab sofort werden alle Nachrichten symmetrisch verschlüsselt.
Finished
- Der Client und der Server senden ein
Finishedan den anderen.
Verschlüsselungsmethoden
Symmetrische Verschlüsselung
Beide Parteien teilen sich einen geheimen Schlüssel. Sobald sich beide Parteien auf einen Schlüssel einigen, wird dieser für die gesamte Verbindung verwendet. Mit dem Schlüssel werden die Nachrichten ver- und entschlüsselt.
Im Gegenteil zur asymmetrischen Verschlüsselung, ist die Verschlüsselung schneller und effizienter.
Asymmetrische Verschlüsselung
Bei der asymmetrischen Verschlüsselung gibt den private und public Schlüssel.
privateSchlüssel:- Privat und geheim
- Nur auf dem Server
publicSchlüssel:- Öffentlich und bekannt
- Auf dem Server und Client
Diese Methode wird beim initialen Schlüsselaustausch verwendet, um eine sichere Verbindung herzustellen. Danach wird die symmetrische Verschlüsselung verwendet.
TLS-Zertifikat
TLS-Zertifikate sind digitale Dokumente, die die Identität eines Servers bestätigen und die Grundlage für die asymmetrische Verschlüsselung im Handshake bilden.
Ein Zertifikat besteht aus folgenden Informationen:
- Domain Name
- Public Key
- Zertifikat Authority (CA)
- Gültigkeitsdauer
- Signaturalgorithmus
- Fingerprint
LetsEncrypt
LetsEncrypt ist eine kostenlose, automatisierte Zertifizierungsstelle für TLS-Zertifikate.
Sie stellen Domain Validated Zertifikate aus, mit dem überprüft wird, ob der Besitzer der Domain auch der Besitzer des Zertifikats ist. Es benötigt keine Überprüfung der Organisation oder der Person, weshalb die Zertifikate schnell und kostenfrei ausgestellt werden können.
Die ausgestellten Zertifikate sind 90 Tage gültig und müssen vor Ablauf erneuert werden.
Dies passiert meist automatisch durch Tools wie certbot.
LetsEncrypt ist durch seine freie Verfügbarkeit und leichte Verwendung beliebt bei vielen Webseiten Entwicklern.
Domain Validated
Bei einem Domain Validated Zertifikat wird überprüft, ob der Besitzer der Domain auch der Besitzer des Zertifikats ist.
Die Validierung erfolgt über eine E-Mail an den Besitzer der Domain oder einen DNS-TXT Eintrag.
Da nur die Kontrolle über die Domain geprüft wird, ist diese Methode schnell und einfach durchführbar.
Diese Art von Zertífikat wird gerne bei kleinen Webseiten oder bei der Entwicklung verwendet.
Organization Validated
Bei einem Organization Validated Zertifikat wird neben der Domainkontrolle auch geprüft, ob die Organisation auch existiert. Hierfür werden offizelle Dokumente der Organisation, wie der Firmenname, Adresse und Telefonnummer benötigt.
Die Informationen werden von einer Zertifizierungsstelle überprüft und die Zertifikate werden ausgestellt. Dadurch kommt es zu längeren Bearbeitungszeiten und höheren Kosten.
Organization Validated Zertifikate sind häufiger bei großen Organisationen zu finden, da diese ein höheres Maß an Sicherheit benötigen und dadurch zusätzliches Vertrauen gegenüber dem Benutzer vermitteln.