Gerador e validador de política HSTS | Cabeçalho e requisitos de preload em uma única tela
Escolha um max-age, ative includeSubDomains e preload e obtenha um cabeçalho Strict-Transport-Security pronto para colar, junto de uma verificação de cinco pontos OK / FALHA / ALERTA frente às regras da preload-list do Chromium.
💡 Sobre esta ferramenta
HTTP Strict Transport Security (HSTS) é um cabeçalho de resposta que diz ao navegador "use sempre HTTPS para este domínio". Escrever o cabeçalho é a parte fácil. O que costuma confundir é a lista de pré-carregamento (preload list): uma lista mantida pelo projeto Chromium e embutida de fábrica nos navegadores. Com o seu domínio nela, o HTTPS passa a ser imposto antes mesmo da primeira requisição, mas o registro exige três condições simultâneas: max-age de pelo menos um ano (31536000 segundos), a diretiva includeSubDomains e a diretiva preload.
Se você enviar um cabeçalho que falhe em qualquer um desses requisitos, o hstspreload.org o rejeita e você perde um ciclo de correção e reenvio. Por outro lado, adicionar preload sem entender suas implicações força HTTPS em todos os seus subdomínios — painéis internos e hosts antigos incluídos — e deixa usuários sem acesso. Esta ferramenta coloca o gerador do cabeçalho e a checklist lado a lado, para você confirmar antes de enviar que o cabeçalho atende às regras e que não criou uma combinação contraditória como max-age=0 junto com preload.
Os valores predefinidos cobrem 0 (revogar), 5 minutos, 1 dia, 1 semana, 30 dias, 180 dias, 1 ano e 2 anos. Para um primeiro rollout, o caminho seguro é começar com um valor curto e aumentá-lo de forma escalonada.
🧐 Perguntas frequentes
P. Qual é o max-age mínimo para a preload-list? R. O registro exige no mínimo 31536000 segundos (1 ano). Verifique se a linha "max-age é de pelo menos 31536000 segundos" muda para OK. Os 180 dias (15552000 s) não alcançam o requisito de 1 ano, portanto não bastam para o registro.
P. O que max-age=0 faz exatamente?
R. Manda o navegador apagar qualquer política HSTS armazenada para o host, útil quando você quer reverter o HSTS. Combiná-lo com preload gera uma contradição, por isso esse par aparece como FALHA na checklist.
P. Qual é o alcance do includeSubDomains? R. Aplica a política a todos os subdomínios, não só ao domínio raiz. É obrigatório para preload, mas qualquer subdomínio que não esteja em HTTPS ficará inacessível, então inventarie seus subdomínios antes de ativá-lo.
P. Posso desfazer um registro de preload? R. Você pode solicitar a remoção, mas os caches dos navegadores levam meses para atualizar. Trate preload como praticamente irreversível e decida com base nisso.
P. Por que aumentar o max-age de forma gradual em vez de pular para um ano? R. Um valor curto mantém baixo o custo de reverter se você encontrar uma configuração errada. A escada usual é 5 min → 1 dia → 1 semana → 1 mês → 1 ano.
📚 Curiosidades
O HSTS é definido no RFC 6797, mas a preload-list não faz parte de nenhum RFC: ela existe como política pública do projeto Chromium em hstspreload.org. Ou seja, você lida com duas camadas: um cabeçalho padronizado e, por cima, uma lista conduzida pelos fabricantes de navegadores.
Essa lista não é exclusiva do Chrome. Firefox, Safari e Edge também a incorporam, de modo que um único registro se propaga para todos os navegadores principais. Uma técnica vista em discussões de segurança: registrar um domínio recém-comprado na preload-list de imediato, para que a imposição de HTTPS comece a partir de um estado sem histórico anterior em HTTP simples.