Como HTTPS e TLS realmente funcionam: um guia prático
Por que HTTPS é importante
Toda vez que você visita um site, você confia que a conexão é privada e que o site é quem diz ser. HTTPS (Hypertext Transfer Protocol Secure) é o protocolo que torna isso possível ao colocar HTTP sobre TLS (Transport Layer Security). Sem ele, senhas, números de cartão de crédito e dados pessoais trafegariam em texto simples, facilmente interceptados por qualquer pessoa na mesma rede.
Neste guia, vamos explicar como HTTPS e TLS realmente funcionam—desde o handshake que estabelece um canal seguro até a criptografia que protege seus dados. Você verá os conceitos-chave, as etapas envolvidas e dicas práticas para garantir que seus próprios sites estejam devidamente protegidos.
O handshake TLS: estabelecendo confiança
Antes de qualquer dado ser trocado, o cliente (navegador) e o servidor realizam um handshake TLS. Esse processo autentica o servidor, negocia algoritmos de criptografia e gera chaves de sessão. As etapas exatas variam entre versões do TLS, mas as ideias centrais são semelhantes.
Passo a passo: handshake TLS 1.2
- Client Hello: O cliente envia uma mensagem com versões TLS suportadas, suítes de cifras e um valor aleatório (Client Random).
- Server Hello: O servidor responde com a versão TLS escolhida, suíte de cifras, um valor aleatório (Server Random) e seu certificado digital.
- Verificação do certificado: O cliente verifica o certificado contra Autoridades Certificadoras (CAs) confiáveis e valida a identidade do servidor.
- Troca de chaves: Usando algoritmos como ECDHE, ambas as partes calculam um segredo pré-mestre compartilhado sem transmiti-lo diretamente.
- Chaves de sessão: Ambos os lados derivam chaves de sessão idênticas a partir do segredo pré-mestre e dos valores aleatórios.
- Finished: Cada lado envia um MAC para confirmar a integridade do handshake; a comunicação criptografada começa.
O TLS 1.3 simplifica isso para uma única viagem de ida e volta (1-RTT) e ainda suporta retomada 0-RTT para conexões repetidas, reduzindo significativamente a latência.
Criptografia: simétrica e assimétrica
O TLS usa criptografia assimétrica e simétrica. A criptografia assimétrica (de chave pública) é usada durante o handshake para trocar chaves com segurança. Uma vez estabelecidas as chaves de sessão, a criptografia simétrica (como AES ou ChaCha20) assume a transferência de dados em massa porque é muito mais rápida.
As suítes de cifras modernas usam Authenticated Encryption with Associated Data (AEAD), como AES-GCM ou ChaCha20-Poly1305, que fornecem confidencialidade e integridade em uma única etapa.
Certificados e cadeias de confiança
Um certificado digital vincula uma chave pública a uma identidade (como um nome de domínio) e é assinado por uma Autoridade Certificadora (CA). Navegadores e sistemas operacionais vêm com um repositório de CAs raiz confiáveis. Quando um servidor apresenta seu certificado, o cliente verifica:
- O certificado é assinado por uma CA confiável (diretamente ou via uma CA intermediária).
- O certificado está dentro do seu período de validade.
- O nome de domínio corresponde ao Subject Alternative Name (SAN) do certificado.
- O certificado não foi revogado (via OCSP ou CRL).
Se qualquer verificação falhar, o navegador mostra um aviso. Let's Encrypt e outras CAs fornecem certificados gratuitos, tornando o HTTPS acessível a todos.
Erros comuns de configuração do TLS
Mesmo com HTTPS habilitado, configurações incorretas podem enfraquecer a segurança. Fique atento a:
- Protocolos obsoletos: Desative TLS 1.0 e 1.1; prefira TLS 1.2 ou 1.3.
- Suítes de cifras fracas: Evite RC4, DES ou cifras de exportação.
- HSTS ausente: Adicione o cabeçalho Strict-Transport-Security para evitar ataques de downgrade.
- Incompatibilidade de certificados: Garanta que os certificados cubram todos os subdomínios e sejam renovados antes do vencimento.
Testando sua configuração HTTPS
Use ferramentas online como o SSL Test do SSL Labs para avaliar sua configuração. Mire em uma nota A ou A+ habilitando TLS 1.3, usando cifras fortes e implementando HSTS. Monitore regularmente a expiração do certificado—automatize a renovação com clientes ACME como o Certbot.
Perguntas frequentes
Qual é a diferença entre HTTPS e TLS?
HTTPS é HTTP sobre TLS. TLS é o protocolo criptográfico que fornece criptografia, autenticação e integridade. HTTPS é a versão segura do HTTP que usa TLS.
Como o TLS 1.3 melhora o desempenho?
O TLS 1.3 reduz o handshake a uma viagem de ida e volta (1-RTT) e suporta retomada 0-RTT, diminuindo a latência. Ele também remove algoritmos obsoletos, simplificando a configuração.
Preciso de um certificado separado para cada subdomínio?
Você pode usar um certificado wildcard para *.example.com ou um certificado multi-domínio (SAN) para cobrir vários nomes de host. O Let's Encrypt oferece ambas as opções gratuitamente.
Pronto para inspecionar seu próprio tráfego TLS? Use nosso Analisador de Logs Nginx para analisar logs de acesso e identificar padrões suspeitos ou handshakes TLS falhos.