1. O cliente encaminha um
"CLIENT HELLO" para o servidor no IP e a porta obtidos durante o
handshake:
struct {
ProtocolVersion client_version;
Random random;
SessionID session_id;
CipherSuite cipher_suites<2..2^16-1>;
CompressionMethod compression_methods<1..2^8-1>;
Extension client_hello_extension_list<0..2^16-1>;
}
ClientHello;
Um exemplo do
"Client Hello", requisitando o
protocolo TLS 1.2, capturado pela
ferramenta Fiddler:
CONNECT URL:443 HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.3;
WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
Proxy-Connection: keep-alive
Connection: keep-alive
Host: URL:443
A SSLv3-compatible ClientHello handshake
was found. Fiddler extracted the parameters below.
Version: 3.3 (TLS/1.2)
Random: E8 DA B9 55 D0 3E 7D 3E 48 86 89 EA CF 59 3E AB 60 D3 B0
F4 E1 37 C4 50 D5 E7 69 56 7B 89 B4 CA
"Time": 30/07/2015 05:06:00
SessionID: empty
Extensions:
server_name
NAME
renegotiation_info 00
elliptic_curves secp256r1
[0x17], secp384r1 [0x18], secp521r1 [0x19]
ec_point_formats uncompressed [0x0]
SessionTicket
empty
NextProtocolNego empty
ALPN
h2-16, h2-15, h2-14, h2, spdy/3.1, http/1.1
status_request
OCSP - Implicit Responder
signature_algs sha256_rsa,
sha384_rsa, sha1_rsa, sha256_ecdsa, sha384_ecdsa, sha1_ecdsa, sha256_dsa,
sha1_dsa
Ciphers:
[C02B]
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
[C02F]
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
[C00A]
TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
[C009]
TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
[C013]
TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA
[C014]
TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA
[0033] TLS_DHE_RSA_WITH_AES_128_SHA
[0039] TLS_DHE_RSA_WITH_AES_256_SHA
[002F] TLS_RSA_AES_128_SHA
[0035] TLS_RSA_AES_256_SHA
[000A]
SSL_RSA_WITH_3DES_EDE_SHA
2. Vou considerar o IIS com a entidade SERVER para
este cenário. Ao receber o "CLIENT HELLO", o servidor tem acesso às
seguintes informações:
·
Endereço IP
·
Número da porta (443)
·
A versão do protocolo
solicitado, por exemplo TLS 1.2
·
A lista dos "Cipher
Suites"
·
O ID da sessão etc.
O servidor irá agora tentar determinar se há um ponto de
extremidade (end point) com o IP e a porta. No caso do IIS o driver TCPIP.SYS
move o pacote para a camada HTTP.SYS se a página solicitada existe.
3. O servidor responderá ao
cliente com “SERVER HELLO” definido no protocolo mencionado no passo anterior
(RFC 3546), se as informações recebidas forem corretas.