1. O cliente envia para o servidor a
versão do protocolo SSL e configurações do algoritmo
que ele usa, alguns dados gerados aleatoriamente, e outras
informações necessárias ao servidor para que a
conexão SSL seja estabelecida.
2. O servidor responde com a
versão do protocolo SSL e configurações do algoritmo
que ele usa, alguns dados gerados aleatoriamente, e outras
informações necessárias ao cliente para que a
conexão SSL seja estabelecida. O servidor então envia seu
certificado, autenticando-o, e, se for o caso, pede o certificado
do cliente.
3. O cliente, a partir das
informações recebidas, tenta autenticar o servidor; se
for bem sucedido, segue para o passo seguinte, caso contrário,
envia uma mensagem de erro para o servidor e informa que a
conexão não pôde ser criada.
4. Usando os dados trocados até
agora, o cliente, possivelmente com a colaboração do
servidor, cria um segredo temporário (premaster secret), a
encripta com a chave pública obtida do certificado do
servidor, e a envia.
5. Se a autenticação do
cliente também foi requisitada, este envia seu certificado
junto a outros dados extras, encriptando esse conteúdo com a
chave secreta temporária gerada no passo 4.
6. Continuando o passo 5, no caso de
a autenticação do cliente ter sido requisitada pelo
servidor, este tentará validar aquele, de modo análogo
à autenticação do servidor. Se a operação
for bem sucedida, o servidor usa sua chave privada para decriptar o
segredo temporário (premaster secret), e depois segue uma
série de passos que são igualmente seguidos pelo cliente
para gerar o segredo a ser usado (master secret).
7. Tanto o cliente, quanto o
servidor usam o segredo citado para gerar as chaves simétricas
a serem usadas na sessão. Com essas chaves, os dois
participantes encriptarão e decriptarão as
informações transmitidas durante a sessão SSL.
8. O cliente, então, envia uma
mensagem ao servidor informando que as novas mensagens serão
encriptadas com a chave secreta. Depois, ele envia uma mensagem
indicando o fim de sua parte do handshake.
9. Análogo ao passo 8, sob o
ponto de vista do servidor.
10. O handshake foi finalizado e o cliente
e o servidor trocam mensagens usando a chave simétrica para
garantir a segurança.
O processo é resumido a seguir, na figura
2.
Figura 2: Handshake