Todos os artigos sobre SSL SSL e certificados

HSTS: HTTP Strict Transport Security Explicado

HSTS (HTTP Strict Transport Security) é um cabeçalho de segurança que instrui os navegadores a sempre conectar via HTTPS — mesmo que o usuário digite http:// ou clique em um link HTTP. Uma vez que o navegador recebe um cabeçalho HSTS, ele automaticamente atualiza todas as futuras requisições para HTTPS naquele domínio, prevenindo ataques de downgrade e conexões inseguras.

Por que o HSTS importa

Sem HSTS, a primeira requisição ao seu site pode ser HTTP (antes do redirecionamento 301 atuar). Durante essa breve janela, um atacante na rede pode:

  • Remover o HTTPS — interceptar o redirecionamento e manter o usuário em HTTP (ataque SSL stripping)
  • Roubar cookies — se cookies forem enviados na requisição HTTP inicial
  • Injetar conteúdo — modificar a resposta de redirecionamento

O HSTS elimina essa janela. Após a primeira visita HTTPS, o navegador nunca mais tenta HTTP.

Como habilitar o HSTS

Nginx

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;

Adicione dentro do bloco server HTTPS (porta 443), não no bloco de redirecionamento HTTP.

Apache

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

Requer mod_headers (sudo a2enmod headers).

Cloudflare

Dashboard → SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS) → Habilitar.

Parâmetros do HSTS

ParâmetroExemploSignificado
max-age63072000 (2 anos)Por quanto tempo (em segundos) o navegador lembra de usar HTTPS
includeSubDomainsAplica HSTS a todos os subdomínios também
preloadSinaliza intenção de participar da lista de preload HSTS

Escolhendo max-age

Fasemax-agePropósito
Teste300 (5 minutos)Verificar se HTTPS funciona antes de se comprometer
Confiante604800 (1 semana)Baixo risco se precisar reverter
Produção31536000 (1 ano)Recomendação padrão
Longo prazo63072000 (2 anos)Necessário para a lista de preload

Comece pequeno, aumente gradualmente. Se o HTTPS quebrar enquanto um max-age longo estiver em cache, os visitantes não conseguirão acessar seu site de forma alguma — o navegador se recusa a conectar via HTTP.

HSTS preload

A lista de preload HSTS é uma lista de domínios codificada nos navegadores para sempre usar HTTPS, mesmo na primeira visita (antes de qualquer cabeçalho HSTS ser recebido).

Requisitos para preload

  1. Servir um certificado HTTPS válido
  2. Redirecionar HTTP para HTTPS no mesmo host
  3. Cabeçalho HSTS com max-age >= 63072000 (2 anos)
  4. Incluir a diretiva includeSubDomains
  5. Incluir a diretiva preload
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

Enviar para preload

Acesse hstspreload.org, insira seu domínio e envie. Após revisão (semanas a meses), seu domínio é adicionado às listas integradas dos navegadores.

Avisos sobre preload

  • É difícil de desfazer. A remoção da lista de preload leva meses e requer um ciclo de release do navegador. Durante esse tempo, seu domínio só pode ser acessado via HTTPS.
  • includeSubDomains é obrigatório — todo subdomínio deve suportar HTTPS. Se staging.example.com não tem certificado, ele se torna inacessível.
  • Só faça preload se tiver certeza de que todos os subdomínios atuais e futuros suportarão HTTPS.

Erros comuns

Configurar HSTS na resposta HTTP

O HSTS deve ser enviado apenas via HTTPS. Se seu redirecionamento HTTP também envia o cabeçalho HSTS, os navegadores o ignoram (a especificação exige HTTPS). Configure o cabeçalho apenas no bloco da porta 443.

Esquecer dos subdomínios

includeSubDomains aplica HSTS a todos os subdomínios. Se internal.example.com não tem HTTPS, ele se torna inacessível. Audite todos os subdomínios antes de habilitar.

Configurar max-age muito alto muito cedo

Se o HTTPS quebrar (certificado expirado, erro de configuração), os visitantes não podem recorrer ao HTTP. O navegador se recusa a conectar. Comece com 5 minutos, verifique se tudo funciona, depois aumente para 1 ano.

Como verificar se o HSTS está ativo

curl -sI https://yourdomain.com | grep -i strict-transport
# Esperado: strict-transport-security: max-age=63072000; includeSubDomains

No Chrome DevTools: aba Network → clique na requisição → Headers → procure por Strict-Transport-Security.

Perguntas frequentes

O HSTS substitui os redirecionamentos HTTP→HTTPS?

Não. HSTS e redirecionamentos servem propósitos diferentes. O redirecionamento captura a primeira requisição HTTP. O HSTS instrui o navegador a nunca mais fazer requisições HTTP (após a primeira visita HTTPS). Você precisa de ambos.

O HSTS pode causar problemas?

Sim, se o HTTPS quebrar. Com um max-age longo, os navegadores se recusam a conectar via HTTP como fallback. É por isso que você deve começar com um max-age curto e só aumentar quando o HTTPS estiver estável.

Preciso de HSTS se estou no Cloudflare?

O Cloudflare gerencia a conexão visitante→Cloudflare, mas o HSTS na sua origem protege a cadeia completa. Habilite o HSTS pelo dashboard do Cloudflare para o edge, e na sua origem se usar o modo Full (Strict).

Qual a diferença entre HSTS e a diretiva CSP upgrade-insecure-requests?

upgrade-insecure-requests instrui o navegador a carregar sub-recursos (imagens, scripts) via HTTPS em vez de HTTP — corrigindo conteúdo misto. O HSTS instrui o navegador a sempre usar HTTPS para todo o domínio. Eles resolvem problemas diferentes e podem ser usados juntos.

Artigos relacionados

Implantacao 2026-05-07
Como Redirecionar HTTP para HTTPS
Force todo o tráfego para HTTPS com redirecionamentos no lado do servidor. Exemplos de configuração para Nginx, Apache e .htaccess com redirecionamentos permanentes 301.
SSL e certificados 2026-05-08
O que e HTTPS? Um Guia Completo
HTTPS criptografa a conexão entre seu navegador é um site. Aprenda como o HTTPS funciona, o handshake TLS, diferencas entre HTTP e HTTPS, impacto no desempenho e como habilita-lo gratuitamente.
Implantacao 2026-05-08
Como Instalar um Certificado SSL no Nginx
Guia passo a passo para instalar um certificado SSL no Nginx. Abrange upload de arquivos, configuração completa do bloco server, boas práticas de TLS, HTTP/2, HSTS, configuração de redirecionamento, testes e solução de 6 erros comuns.
Implantacao 2026-05-08
Como Instalar um Certificado SSL no Apache
Guia passo a passo para instalar um certificado SSL no Apache com mod_ssl. Cobre upload de arquivos, configuração de VirtualHost, boas práticas de TLS, HSTS, redirecionamento HTTP e solução de 5 erros comuns.
Obtenha um certificado SSL gratuito no seu navegador
Sem instalacao, sem conta. Sua chave privada nunca sai do seu dispositivo.
Obter seu certificado