The client initiates the connection by sending the message ClientHellomessage, which contains:
The purpose of this message is to start negotiating security parameters with the server.
([Microsoft Learn][1])
The server responds with the message ServerHellomessage which contains:([Wikipedia][2])
This message confirms the selection of common security parameters for the session.
The server sends its X.509 certificate containing the public key. The client uses this certificate to:([catchpoint.com][3])
Depending on the selected cipher suite, the server can send a message ServerKeyExchangemessage that contains:([Wikipedia][2])
The client verifies the signature to ensure that the parameters come from an authorised server.
([Taro][5])
The server sends a message ServerHelloDonemessage, signalling the end of its part of the negotiation. The client can now continue with the handshake process.
The client generates a premaster secret and sends it to the server in a message ClientKeyExchange. Depending on the key exchange method:([ManageEngine][4])
Both parties use the premaster secret and random values to compute the shared master secret.([Wikipedia][2])
([Fortinet Docs][7])
The client sends a message ChangeCipherSpec, informing the server that from this point onwards all messages will be encrypted using the agreed parameters.([takethenotes.com][8])
([Fortinet Docs][7])
The client sends a message Finishedmessage, which is the first encrypted message in the session. It contains a digest of all previous handshake messages, allowing the server to verify the integrity and authenticity of the negotiation.
After receiving and verifying the message Finishedmessage, the server also sends its ChangeCipherSpec i Finishedmessage, completing the handshake process.
From this point onwards, the communication between client and server is encrypted and secure.
sources: