Aprenda / Redes e Internet

IntermediárioAula 9 de 1616 min0% da trilha

TLS na prática: handshake e certificados

O cadeado no navegador não significa 'site confiável' — significa só 'ninguém no meio consegue ler isso'.

A lição de HTTP/HTTPS já mostrou que o "S" significa criptografia via TLS. O que faltou explicar é como os dois lados chegam a uma chave de criptografia em comum sem já compartilhar um segredo antes, e por que o navegador confia no certificado que o servidor apresenta.

O handshake, passo a passo

Navegador
Servidor

Clique em “Reproduzir fluxo” para ver a requisição passo a passo.

Repare que a chave de criptografia usada depois do handshake é gerada na hora, só pra essa sessão — nem cliente nem servidor precisavam conhecer essa chave antes da conversa começar. O certificado do passo 2 não serve pra criptografar o tráfego em si; ele serve pra provar identidade antes de qualquer chave ser combinada.

Certificado — quem garante que ele é legítimo?

Um certificado é assinado por uma autoridade certificadora (CA — Certificate Authority), uma entidade cuja chave pública raiz já vem pré-instalada como confiável no seu sistema operacional e no seu navegador. Se o certificado do servidor faz parte de uma cadeia que termina numa dessas raízes confiáveis, o navegador aceita sem perguntar nada a você.

terminal — inspecionando a cadeia de certificado
curl -vI https://howtodev.site 2>&1 | grep -E "subject|issuer"

issuer é quem assinou o certificado; nesse exemplo, a Let's Encrypt — uma CA gratuita e automatizada, que emite certificados via um protocolo chamado ACME. Uma ferramenta como o certbot automatiza esse processo inteiro: prova que você controla o domínio, recebe o certificado, e agenda a renovação sozinha (certificados da Let's Encrypt valem só ~90 dias, de propósito, justamente pra forçar esse tipo de automação em vez de renovação manual esquecida).

O que o cadeado NÃO garante

O cadeado prova só duas coisas: a conexão está criptografada, e o certificado corresponde ao domínio que você está acessando. Ele não prova que o site por trás é confiável, legítimo, ou que a empresa é quem diz ser. Uma página de phishing registrada em seu-banc0-online.com consegue um certificado válido gratuito com a mesma facilidade que qualquer outro site — a CA verifica só que quem pediu o certificado controla aquele domínio, não a reputação de quem está por trás dele.

Exercício

Um colega diz: "não tem como ser phishing, o site tem cadeado e certificado válido". O que está errado nesse raciocínio?

Quiz rápido

O que o cadeado do navegador realmente garante?
Por que uma autoridade certificadora (CA) como a Let's Encrypt é confiável para o navegador?