SSL/TLS
Last updated
Last updated
The SSL or TLS client sends a βClient Helloβ message that lists cryptographic information such as the SSL or TLS version and, in the client's order of preference, the CipherSuites supported by the client. The message also contains a random byte string that is used in subsequent computations. The protocol allows for the βclient helloβ to include the data compression methods supported by the client.
The SSL or TLS server responds with a βServer Helloβ message that contains the CipherSuite chosen by the server from the list provided by the client, the session ID, and another random byte string. The server also sends its digital certificate. If the server requires a digital certificate for client authentication, the server sends a βclient certificate requestβ that includes a list of the types of certificates supported and the Distinguished Names of acceptable Certification Authorities (CAs).
The SSL or TLS client verifies the server's digital certificate.
The SSL or TLS client sends the random byte string that enables both the client and the server to compute the secret key to be used for encrypting subsequent message data. The random byte string itself is encrypted with the server's public key.
If the SSL or TLS server sent a βClient Certificate Requestβ, the client sends a random byte string encrypted with the client's private key, together with the client's digital certificate, or a βno digital certificate alertβ. This alert is only a warning, but with some implementations the handshake fails if client authentication is mandatory.
The SSL or TLS server verifies the client's certificate.
The SSL or TLS client sends the server a βFinishedβ message, which is encrypted with the secret key, indicating that the client part of the handshake is complete.
The SSL or TLS server sends the client a βFinishedβ message, which is encrypted with the secret key, indicating that the server part of the handshake is complete.
For the duration of the SSL or TLS session, the server and client can now exchange messages that are symmetrically encrypted with the shared secret key.