Server-ServerKeyExchange
Dit bericht bevat de sleuteluitwisselingsalgoritmeparameters die de client nodig heeft van de server om gemengde geheimen af te leiden die zullen worden gebruikt bij het maken van de laatste sessiesleutels voor symmetrische versleuteling door beide partijen. Het is optioneel, omdat sommige sleuteluitwisselingsalgoritmen zoals RSA key exchange deze parameters NIET nodig hebben, omdat het certificaat van de server zelf voldoende is voor de client om het pre-mastergeheim te construeren en veilig met de server te communiceren.
bijv. als de methode voor sleuteluitwisseling die door de server in een vorige stap is gekozen Diffie–Hellman (DH) is, bevat de server dit bericht na het certificaat, dat de publieke componenten bevat die nodig zijn om het mastergeheim te genereren.
Server — CertificateRequest
Dit bericht zal worden verzonden als SSL-clientverificatie is ingeschakeld op de server. Dit is normaal gesproken niet vereist in de meeste webservers, maar voor hoge beveiligingseisen kan de server het certificaat van de client nodig hebben voor verificatie. Samen met de certificaataanvraag verzendt de sever de clienttypen die aanvaardbaar zijn en geeft hij ook een lijst aan met DN-namen van certificaatautoriteiten die door de server worden vertrouwd. Deze lijst bevat de CA-autoriteiten die beschikbaar zijn in de truststore van de server.
Server-ServerHelloDone
ten slotte verzendt de server het ServerHelloDone-bericht dat de client aangeeft dat de server klaar is met het doorgeven van beveiligingsparameters. Dit bericht beëindigt het deel van de handshake onderhandeling van de server. Dit bericht zal geen andere informatie bevatten.
clientcertificaat
de client reageert met een clientcertificaat als de server clientverificatie aanvraagt met een certificaataanvraag bericht. Voordat het certificaat wordt verzonden, controleert de client echter of de DN van het certificaat van de uitgever te vinden is in de lijst met DN-namen van vertrouwde CA ‘ s die door de server worden verzonden. Als de DN van de uitgever niet is gevonden, zal de client het certificaat niet naar de server sturen. Als aan de serverzijde verificatie van clientcertificaten verplicht is, zal de TLS-handshake hier mislukken. Anders verzendt de client het certificaat en de benodigde tussencertificaten die worden geketend naar de overeenkomende DN die wordt vermeld in het bericht certificaataanvraag.
Client-ClientKeyExchange
Het ClientKeyExchange-bericht bevat het pre-mastergeheim, dat door de client wordt gegenereerd. Dit wordt uitgevoerd volgens de cipher suite agreed door beide partijen in een vorige stap. Zowel de client als de server zullen dit gebruiken om een master secret te genereren waaruit ze beiden de laatste cryptografische sleutels zullen afleiden die nodig zijn om het versleutelde kanaal tot stand te brengen. De client versleutelt het pre-master geheim met de publieke sleutel van de server, zodat als een afluisteraar dit stukje data zou onderscheppen hij het niet kan ontcijferen omdat hij geen toegang heeft tot de private sleutel van de server. De hoofdsleutel voorziet de server van de benodigde gegevens om de sleutels voor de symmetrische versleuteling te genereren. Echter, als de cipher suite gekozen voor deze sessie DH was, dan bevat de ClientKeyExchange de publieke DH parameters van de client in plaats van een pre-master geheim.
Client-CertificateVerify
Dit bericht wordt door de client gebruikt om te bewijzen dat de server de private sleutel heeft die overeenkomt met het publieke sleutelcertificaat. Het bericht bevat gehashte informatie (hash van alle berichten die tot nu toe zijn uitgewisseld tijdens het handshake-proces) die digitaal is ondertekend door de client. Dit is vereist als de server een certificaataanvraag aan de client heeft uitgegeven, zodat de client een certificaat heeft verzonden als antwoord dat moet worden geverifieerd aan de serverzijde.
Client-ChangeCipherSpec
Het ChangeCipherSpec-bericht is slechts een bericht van de client om de server te informeren dat alle gegevens die de client vanaf nu verzendt versleuteld zullen worden met behulp van de overeengekomen beveiligingsparameters. Op dit punt hebben zowel de client als de server alle componenten die nodig zijn om de master secret te genereren en vervolgens cryptografische sessiesleutels af te leiden.
Beide zijden verifiëren dat de handshake volgens plan is verlopen en dat beide identieke sleutels hebben gegenereerd door een laatste versleutelde bericht te sturen dat aan elkaar aangeeft dat versleuteling is geactiveerd.
Client-afgewerkte
eerst stuurt de client een versleuteld bericht naar de server. Dit bericht is een cryptografische hash (message digest), van alle voorgaande handshake-berichten gecombineerd, gevolgd door een speciaal nummer dat de rol van de cliënt identificeert, het master secret en padding. Dit wordt versleuteld met de nieuw gegenereerde sessiesleutel en naar de server verzonden.
Server-ChangeCipherSpec
nu stuurt de server een ChangeCipherSpec bericht terug naar de client om de client te vertellen dat alle gegevens na dit bericht zullen worden versleuteld.
Server-voltooid
ChangeCipherSpec bericht wordt gevolgd door een versleuteld bericht van de server naar de client. Dit is een cryptografische hash gegenereerd door server, van alle componenten die gebruikt worden tijdens het hanshake proces samen met een speciaal nummer dat de serverrol identificeert.