Zum Inhalt springen

Handshake-Protokoll

Zuletzt aktualisiert: 02.06.2025Autor: Redaktion DomainProvider.de · Lesezeit: 4 Min.

Das Handshake-Protokoll ist ein zentraler Bestandteil des TLS-Protokolls (Transport Layer Security) und regelt den Verbindungsaufbau zwischen einem Client und einem Server. Bevor verschluesselte Daten uebertragen werden koennen, muessen sich beide Seiten auf kryptografische Verfahren, Schluessel und Zertifikate einigen. Dieser Aushandlungsprozess wird als Handshake bezeichnet. Er stellt sicher, dass die Verbindung authentifiziert und abhoersicher ist. Jede HTTPS-Verbindung beginnt mit einem solchen Handshake, weshalb das Verfahren fuer die Sicherheit im Internet eine grundlegende Rolle spielt.

Wie laeuft ein TLS-Handshake ab?

Der TLS-Handshake folgt einem festgelegten Ablauf, bei dem Client und Server mehrere Nachrichten austauschen:

  1. ClientHello: Der Client sendet eine Nachricht an den Server, die unterstuetzte TLS-Versionen, eine Liste verfuegbarer Cipher Suites (Verschluesselungsverfahren) und eine zufaellig generierte Zahl enthaelt.
  2. ServerHello: Der Server antwortet mit der ausgewaehlten TLS-Version, der gewaehlten Cipher Suite und einer eigenen Zufallszahl.
  3. Zertifikataustausch: Der Server sendet sein SSL-Zertifikat an den Client. Dieses Zertifikat enthaelt den oeffentlichen Schluessel des Servers und wird von einer Zertifizierungsstelle (CA) signiert. Der Client prueft, ob das Zertifikat gueltig und vertrauenswuerdig ist.
  4. Schluesselaustausch: Client und Server generieren gemeinsam einen Sitzungsschluessel (Session Key). Dieser symmetrische Schluessel wird fuer die eigentliche Datenverschluesselung verwendet. Bei TLS 1.2 geschieht dies ueber ein Pre-Master-Secret, das der Client mit dem oeffentlichen Schluessel des Servers verschluesselt.
  5. Finished-Nachrichten: Beide Seiten bestaetigen, dass der Handshake erfolgreich abgeschlossen wurde. Ab diesem Punkt werden alle Daten verschluesselt uebertragen.

Unterschiede zwischen TLS 1.2 und TLS 1.3

TLS 1.3, veroeffentlicht im Jahr 2018, bringt wesentliche Verbesserungen gegenueber TLS 1.2 mit sich:

Merkmal TLS 1.2 TLS 1.3
Handshake-Dauer Zwei Round-Trips (2-RTT) erforderlich Nur ein Round-Trip (1-RTT), optional 0-RTT bei Wiederverbindung
Cipher Suites Viele verschiedene, darunter aeltere und unsichere Verfahren Reduzierte Auswahl, nur noch moderne und sichere Verfahren
Schluesselaustausch RSA oder Diffie-Hellman moeglich Ausschliesslich Ephemeral Diffie-Hellman (ECDHE/DHE)
Forward Secrecy Optional, abhaengig von der Cipher Suite Zwingend vorgeschrieben
Verschluesselung im Handshake Zertifikate werden unverschluesselt uebertragen Zertifikate werden bereits verschluesselt gesendet
Kompression Unterstuetzt (anfaellig fuer CRIME-Angriff) Entfernt

Durch den reduzierten Handshake in TLS 1.3 wird die Verbindung schneller aufgebaut, was besonders bei Webseiten mit vielen gleichzeitigen Besuchern spuerbar ist. Der Client sendet bereits im ClientHello seinen Schluesselanteil mit, sodass der Server sofort antworten und den Handshake in einem einzigen Schritt abschliessen kann.

Forward Secrecy und Schluesselaustausch

Ein wesentlicher Sicherheitsgewinn von TLS 1.3 ist die verpflichtende Verwendung von Forward Secrecy (auch Perfect Forward Secrecy genannt). Bei diesem Prinzip wird fuer jede Sitzung ein einmaliger Schluessel generiert. Selbst wenn ein Angreifer den privaten Schluessel des Servers kompromittiert, kann er damit keine frueheren Verbindungen entschluesseln.

In TLS 1.2 war es moeglich, RSA-basierte Schluesselaustauschverfahren zu verwenden. Dabei wurde der Sitzungsschluessel mit dem oeffentlichen Schluessel des Servers verschluesselt. Wurde der private Schluessel spaeter bekannt, konnten saemtliche aufgezeichneten Verbindungen nachtraeglich entschluesselt werden. TLS 1.3 schliesst dieses Risiko aus, indem ausschliesslich Ephemeral-Diffie-Hellman-Verfahren (ECDHE oder DHE) zum Einsatz kommen.

Bedeutung des Handshake-Protokolls fuer SSL-Zertifikate

SSL-Zertifikate sind ein unverzichtbarer Bestandteil des TLS-Handshakes. Der Server muss waehrend des Handshakes nachweisen, dass er tatsaechlich der Inhaber der angegebenen Domain ist. Dies geschieht durch Vorlage des SSL-Zertifikats, das von einer vertrauenswuerdigen Zertifizierungsstelle ausgestellt wurde.

Der Client prueft dabei mehrere Punkte:

  • Ist das Zertifikat noch gueltig (Ablaufdatum)?
  • Wurde es von einer anerkannten Zertifizierungsstelle signiert?
  • Stimmt der im Zertifikat eingetragene Hostname mit der aufgerufenen Domain ueberein?
  • Wurde das Zertifikat widerrufen (Pruefung ueber CRL oder OCSP)?

Ohne ein gueltiges SSL-Zertifikat kann der TLS-Handshake nicht erfolgreich abgeschlossen werden. Der Browser zeigt in diesem Fall eine Sicherheitswarnung an und die Verbindung wird abgebrochen oder als unsicher gekennzeichnet.

Fehlerbehebung bei Handshake-Problemen

Wenn der TLS-Handshake fehlschlaegt, koennen verschiedene Ursachen vorliegen:

  • Abgelaufenes Zertifikat: Das SSL-Zertifikat auf dem Server ist nicht mehr gueltig und muss erneuert werden.
  • Inkompatible TLS-Versionen: Client und Server finden keine gemeinsame TLS-Version. Dies tritt haeufig auf, wenn der Server nur veraltete Versionen unterstuetzt.
  • Falsche Cipher Suite: Client und Server haben keine gemeinsame Verschluesselungsmethode. Insbesondere bei strenger Serverkonfiguration kann dies auftreten.
  • Zertifikatskette unvollstaendig: Der Server sendet nicht alle Zwischenzertifikate mit, sodass der Client die Vertrauenskette nicht nachvollziehen kann.
  • Hostname-Mismatch: Der im Zertifikat eingetragene Domainname stimmt nicht mit der aufgerufenen Adresse ueberein.

Administratoren koennen solche Probleme mit Tools wie OpenSSL oder browserseitigen Entwicklertools diagnostizieren. Die korrekte Konfiguration des Webservers, ein gueltiges SSL-Zertifikat und die Unterstuetzung aktueller TLS-Versionen sind Voraussetzungen fuer einen reibungslosen Handshake.