Server – ServerKeyExchange
Diese Nachricht enthält die Schlüsselaustauschalgorithmus-Parameter, die der Client vom Server benötigt, um intermittierende Geheimnisse abzuleiten, die beim Erstellen der endgültigen Sitzungsschlüssel für die symmetrische Verschlüsselung von beiden Parteien verwendet werden. Es ist optional, da einige Schlüsselaustauschalgorithmen wie der RSA-Schlüsselaustausch diese Parameter nicht erfordern, da das Zertifikat des Servers selbst ausreicht, damit der Client das Pre-Master-Geheimnis erstellen und sicher mit dem Server kommunizieren kann.
Z.B. wenn die vom Server in einem vorherigen Schritt gewählte Methode des Schlüsselaustauschs Diffie–Hellman (DH) ist, enthält der Server diese Nachricht nach dem Zertifikat, das die öffentlichen Komponenten enthält, die zum Generieren des Mastergeheimnisses erforderlich sind.
Server — CertificateRequest
Diese Nachricht wird gesendet, wenn die SSL-Clientauthentifizierung auf dem Server aktiviert ist. Dies ist normalerweise bei den meisten Webservern nicht erforderlich, aber für hohe Sicherheitsanforderungen benötigt der Server möglicherweise das Zertifikat des Clients zur Authentifizierung. Zusammen mit der Zertifikatsanforderung sendet der Server die akzeptablen Clienttypen und gibt auch eine Liste der definierten Namen von Zertifizierungsstellen an, denen der Server vertraut. Diese Liste enthält die Zertifizierungsstellen, die im Truststore des Servers verfügbar sind.
Server — ServerHelloDone
Schließlich sendet der Server die ServerHelloDone-Nachricht, die dem Client anzeigt, dass der Server die Sicherheitsparameter übergeben hat. Diese Nachricht beendet den Teil der Handshake-Aushandlung des Servers. Diese Nachricht enthält keine weiteren Informationen.
Client — Zertifikat
Der Client antwortet mit einem Client-Zertifikat, wenn der Server die Client-Authentifizierung mit einer Zertifikatsanforderungsnachricht anfordert. Vor dem Senden des Zertifikats überprüft der Client jedoch, ob der DN des Ausstellers des Client-Zertifikats in der Liste der vom Server gesendeten Distinguished Names vertrauenswürdiger CAs enthalten ist. Wenn der DN des Ausstellers nicht gefunden wurde, sendet der Client sein Zertifikat nicht an den Server. Wenn auf der Serverseite die Clientzertifikatauthentifizierung obligatorisch ist, schlägt der TLS-Handshake hier fehl. Andernfalls sendet der Client sein Zertifikat und alle erforderlichen Zwischenzertifikate, die mit dem übereinstimmenden DN verkettet sind, der in der Zertifikatsanforderungsnachricht aufgeführt ist.
Client — ClientKeyExchange
Die Nachricht ClientKeyExchange enthält das Pre-Master-Secret, das vom Client generiert wird. Dies wird gemäß der Chiffriersuite durchgeführt, die von beiden Parteien in einem vorherigen Schritt erstellt wurde. Sowohl der Client als auch der Server verwenden dies, um ein Hauptgeheimnis zu generieren, aus dem beide die endgültigen kryptografischen Schlüssel ableiten, die zum Einrichten des verschlüsselten Kanals erforderlich sind. Der Client verschlüsselt das Pre-Master-Geheimnis mit dem öffentlichen Schlüssel des Servers, so dass ein Lauscher, wenn er dieses Datenbit abfangen würde, es nicht entschlüsseln kann, da er keinen Zugriff auf den privaten Schlüssel des Servers hat. Der Hauptschlüssel stellt dem Server die erforderlichen Daten zur Verfügung, um die Schlüssel für die symmetrische Verschlüsselung zu generieren. Wenn jedoch die für diese Sitzung ausgewählte Verschlüsselungssuite DH war, enthält ClientKeyExchange die öffentlichen DH-Parameter des Clients anstelle eines Pre-Master-Geheimnisses.
Client — CertificateVerify
Diese Nachricht wird vom Client verwendet, um dem Server zu beweisen, dass er den privaten Schlüssel besitzt, der seinem öffentlichen Schlüsselzertifikat entspricht. Die Nachricht enthält Hash-Informationen (Hash aller bisher während des Handshake-Prozesses ausgetauschten Nachrichten), die vom Client digital signiert werden. Es ist erforderlich, wenn der Server eine CertificateRequest an den Client ausgegeben hat, damit der Client als Antwort ein Zertifikat gesendet hat, das auf der Serverseite überprüft werden muss.
Client — ChangeCipherSpec
Die ChangeCipherSpec-Nachricht ist nur eine Nachricht des Clients, um den Server darüber zu informieren, dass alle Daten, die der Client von nun an sendet, mit den vereinbarten Sicherheitsparametern verschlüsselt werden. Zu diesem Zeitpunkt verfügen sowohl der Client als auch der Server über alle Komponenten, die zum Generieren des Mastergeheimnisses und zum Ableiten kryptografischer Sitzungsschlüssel erforderlich sind.
Beide Seiten verifizieren, dass der Handshake wie geplant verlaufen ist und dass beide identische Schlüssel generiert haben, indem sie eine abschließende verschlüsselte Finished Message senden, die einander anzeigt, dass CipherSuite aktiviert ist.
Client — Fertig
Zunächst sendet der Client eine verschlüsselte Fertige Nachricht an den Server. Diese Nachricht ist ein kryptografischer Hash (Message Digest) aller vorherigen Handshake-Nachrichten, gefolgt von einer speziellen Nummer, die die Clientrolle, das Mastergeheimnis und das Auffüllen identifiziert. Dieser wird mit dem neu generierten Sitzungsschlüssel verschlüsselt und an den Server gesendet.
Server — ChangeCipherSpec
Nun sendet der Server eine ChangeCipherSpec-Nachricht zurück an den Client, um dem Client mitzuteilen, dass alle Daten nach dieser Nachricht verschlüsselt werden.
Server — Fertig
Auf ChangeCipherSpec folgt eine verschlüsselte Fertige Nachricht vom Server an den Client. Dies ist ein vom Server generierter kryptografischer Hash aller Komponenten, die während des Hanshake-Prozesses verwendet werden, zusammen mit einer speziellen Nummer, die die Serverrolle identifiziert.