Server — ServerKeyExchange
Acest mesaj poartă parametrii algoritmului de schimb de chei de care clientul are nevoie de la server pentru a obține secrete intermiate care vor fi utilizate la construirea cheilor de sesiune finale pentru criptarea simetrică de către ambele părți. Este opțional, deoarece unii algoritmi de schimb de chei, cum ar fi RSA Key exchange, nu necesită acești parametri, deoarece certificatul serverului în sine va fi suficient pentru ca clientul să construiască și să comunice în siguranță secretul pre-master cu serverul.
de exemplu. dacă metoda de schimb de chei aleasă de server într–un pas anterior este Diffie-Hellman (DH), serverul include acest mesaj după certificat, care va include componentele publice necesare pentru a genera secretul principal.
Server — CertificateRequest
Acest mesaj va fi trimis, dacă autentificarea SSL client este activată în server. În mod normal, acest lucru nu este necesar în majoritatea serverelor web, dar pentru cerințe ridicate de securitate, serverul poate solicita certificatul clientului pentru autentificare. Împreună cu cererea de certificat, sever trimite tipurile de client care sunt acceptabile și indică, de asemenea, o listă de nume distincte ale autorităților de certificare care sunt de încredere de către server. Această listă include autoritățile CA disponibile în truststore serverului.
Server — ServerHelloDone
În cele din urmă, serverul trimite mesajul ServerHelloDone indicând clientului că serverul a terminat trecerea parametrilor de securitate. Acest mesaj termină partea serverului de negociere strângere de mână. Acest mesaj nu va conține alte informații.
Client — certificat
clientul răspunde cu un certificat de Client dacă serverul solicită autentificarea clientului cu mesaj de solicitare a certificatului. Cu toate acestea, înainte de trimiterea certificatului, Clientul va verifica DN-ul emitentului certificatului clientului poate fi găsit în lista de nume distincte de CAs de încredere trimise de server. Dacă DN-ul emitentului nu a fost găsit, clientul nu va trimite certificatul către server. În partea de server dacă autentificarea certificatului client este obligatorie, strângerea de mână TLS va eșua aici. În caz contrar, clientul va trimite certificatul său și orice certificate intermediare necesare lanțului către DN-ul potrivit listat în mesajul de solicitare a certificatului.
Client — ClientKeyExchange
mesajul ClientKeyExchange conține secretul pre-master, care este generat de client. Acest lucru este realizat în conformitate cu suita de cifrare aggreed de ambele părți într-un pas anterior. Atât clientul, cât și serverul vor folosi acest lucru pentru a genera un secret principal din care ambii vor obține cheile criptografice finale necesare pentru a stabili canalul criptat. Clientul criptează secretul pre-master cu cheia publică a serverului, astfel încât, dacă un interceptor ar intercepta acest bit de date, nu îl va putea decripta, deoarece nu are acces la cheia privată a serverului. Cheia master oferă serverului datele necesare pentru a genera cheile pentru criptarea simetrică. Cu toate acestea, dacă suita de cifrare aleasă pentru această sesiune a fost DH, atunci ClientKeyExchange conține parametrii DH publici ai clientului în loc de un secret pre-master.
Client — CertificateVerify
Acest mesaj este folosit de client pentru a dovedi serverului că deține cheia privată corespunzătoare certificatului său de cheie publică. Mesajul conține informații hash (hash – ul tuturor mesajelor schimbate până acum în timpul procesului de strângere de mână) care este semnat digital de client. Este necesar în cazul în care serverul a emis un CertificateRequest la client, astfel încât clientul a trimis un certificat ca răspuns care trebuie să fie verificate în partea de server.
Client — ChangeCipherSpec
mesajul ChangeCipherSpec este doar un mesaj de la client pentru a informa serverul că toate datele pe care clientul le trimite de aici înainte vor fi criptate folosind parametrii de securitate conveniți. În acest moment, atât clientul, cât și serverul au toate componentele necesare pentru a genera secretul principal și apoi pentru a obține chei de sesiune criptografice.ambele părți verifică dacă strângerea de mână a procedat conform planului și că ambele au generat chei identice prin trimiterea unui mesaj final criptat care indică reciproc că CipherSuite este activat.
client — terminat
în primul rând, clientul trimite un mesaj criptat terminat la server. Acest mesaj este un hash criptografic( message digest), al tuturor mesajelor anterioare de strângere de mână combinate, urmate de un număr special de identificare a rolului clientului, secretul principal și umplutura. Aceasta este criptată cu cheia de sesiune nou generată și trimisă la server.
Server — ChangeCipherSpec
acum serverul trimite un mesaj ChangeCipherSpec înapoi la client pentru a spune clientului că toate datele după acest mesaj vor fi criptate.
Server — terminat
mesajul ChangeCipherSpec este urmat de un mesaj criptat terminat de la server la client. Acesta este un hash criptografic generat de server, a tuturor componentelor utilizate în timpul procesului hanshake împreună cu un număr special de identificare a rolului serverului.