- Server generates its own public/private key pairs before deployment.
- Server sends a certificate signing request to the CA before deployment.
- Server receives the certificate signed by the CA before deployment.
- Client and Server establishes a TCP connection.
- Client send a 'ClientHello' request. It includes cipher suites, session id, and ssl protcol version.
- Client receives the signed CA from server and unsigns it using the public key provided by the CA.
- Client validates the unsigned CA by checking validity period, certificate revocation and domain name matching.
- If the certificate is valid, client generates a symmetric key(generates pre-master secrete) and signs it using the server's public key.
- server unsigns the signed key using its private key.
- handshake finished.