Klient inicjuje połączenie, wysyłając wiadomość ClientHello, która zawiera:
Celem tej wiadomości jest rozpoczęcie negocjacji parametrów bezpieczeństwa z serwerem.
([Microsoft Learn][1])
Serwer odpowiada wiadomością ServerHello, która zawiera:([Wikipedia][2])
Ta wiadomość potwierdza wybór wspólnych parametrów bezpieczeństwa dla sesji.
Serwer przesyła swój certyfikat X.509 zawierający klucz publiczny. Klient wykorzystuje ten certyfikat do:([catchpoint.com][3])
W zależności od wybranego zestawu szyfrów, serwer może wysłać wiadomość ServerKeyExchange, która zawiera:([Wikipedia][2])
Klient weryfikuje podpis, aby upewnić się, że parametry pochodzą od autoryzowanego serwera.
([Taro][5])
Serwer wysyła wiadomość ServerHelloDone, sygnalizując zakończenie swojej części negocjacji. Klient może teraz kontynuować proces handshake.
Klient generuje premaster secret i przesyła go do serwera w wiadomości ClientKeyExchange. W zależności od metody wymiany kluczy:([ManageEngine][4])
Obie strony wykorzystują premaster secret oraz losowe wartości do obliczenia wspólnego master secret.([Wikipedia][2])
([Fortinet Docs][7])
Klient wysyła wiadomość ChangeCipherSpec, informując serwer, że od tego momentu wszystkie wiadomości będą szyfrowane przy użyciu uzgodnionych parametrów.([takethenotes.com][8])
([Fortinet Docs][7])
Klient wysyła wiadomość Finished, która jest pierwszą zaszyfrowaną wiadomością w sesji. Zawiera ona skrót wszystkich wcześniejszych wiadomości handshake, co umożliwia serwerowi weryfikację integralności i autentyczności negocjacji.
Po otrzymaniu i weryfikacji wiadomości Finished, serwer również wysyła swoje wiadomości ChangeCipherSpec i Finished, kończąc proces handshake.
Od tego momentu komunikacja między klientem a serwerem jest szyfrowana i bezpieczna.
źródła: