Um navegador que digita http:// primeiro e acessa https:// depois que um redirecionamento já enviou uma solicitação de forma clara, e uma VPN não muda isso. O túnel protege o trecho do cliente até o nó de saída; ele não criptografa nada acima da camada de transporte, portanto, um observador entre a saída e a origem ainda vê o salto do texto simples. Tornar o HTTPS a primeira solicitação é uma alteração do lado do cliente com três partes: um endereço HTTPS real, o modo de atualização do navegador e a política do próprio site. As etapas abaixo são a ordem que uso, cada uma com uma marca que informa se foi realizada.

Etapa 1: confirme qual é realmente a primeira solicitação

Antes de mudar qualquer coisa, veja o que o navegador envia. Abra o painel de rede com a página recarregada de um cache frio e leia a primeira linha: se o esquema for http e o status for 301 ou 308, tudo depois dessa linha será uma segunda solicitação. curl -sS -o /dev/null -w '%{http_code} %{url_effective}\n' http://example.com reproduz a mesma sequência fora do navegador e imprime o URL que você acessou.

Dois resultados são possíveis e precisam de soluções diferentes. Se o site servir HTTPS no mesmo host, a solução é parar de publicar o formulário HTTP: atualizar o marcador, o link do wiki, o atalho na área de trabalho e o modelo de e-mail em que as pessoas clicam. Se o site não servir HTTPS, nenhuma configuração do navegador o criará, e a resposta honesta é que o destino é o problema. Não ignore o segundo caso com uma exceção, porque uma exceção de certificado em uma página de conta converte um problema de transporte em um problema de credencial. Anote em que caso você se encontra antes de tocar em uma configuração.

Etapa 2: ativar o modo somente HTTPS do navegador

O modo de atualização é a segunda parte e os modos não são intercambiáveis. Verifique o que o seu faz antes de ativá-lo: atualize silenciosamente, atualize com um aviso ou recuse-se a carregar.

No Firefox, os controles ficam atrás de about:config e na página de configurações de privacidade, com dom.security.https_only_mode como opção e exceções por site gerenciadas no menu de cadeado. No Chrome e no Edge, a mesma ideia está em Configurações, Privacidade e segurança, Segurança, rotulada Sempre use conexões seguras. Seja qual for o rótulo, verifique o comportamento em relação a um host que responde apenas na porta 80, porque um modo que atualiza e depois faz fallback silenciosamente não é a proteção que você acha que ativou. A documentação somente HTTPS do Firefox explica a atualização, o aviso e o comportamento de exceção para esse navegador.

Etapa 3: corrija os recursos, não apenas a barra de endereço

Quando uma atualização falhar, leia o erro exato em vez da barra de endereço. Um host sem ouvinte HTTPS, um nome de host que não corresponde ao certificado e uma cadeia expirada produzem mensagens diferentes e pertencem a proprietários diferentes. Apenas o primeiro é uma lacuna no lado do servidor; o segundo geralmente é um marcador que nunca foi atualizado; o terceiro é um problema de renovação para o qual a conexão VPN é irrelevante.

Não adicione uma exceção de certificado a um site de conta porque a VPN está ativada. A exceção desativa a verificação que teria capturado exatamente a interceptação que uma VPN deveria impedir.

A terceira parte está dentro da página e é aquela que as pessoas sentem falta. Uma página carregada por HTTPS ainda pode extrair imagens, fontes ou scripts de um URL http, e o navegador irá bloqueá-los ou fazer downgrade do indicador de segurança para toda a página. Inspecione as solicitações com falha no painel de rede e corrija as referências de recursos em seu proprietário, em vez de presumir que a barra de endereço descreve cada solicitação. Em um site que você administra, isso significa corrigir os URLs armazenados no CMS ou no modelo, em vez de reescrevê-los no navegador. Se você não puder alterar a fonte, registre o conteúdo misto como uma lacuna conhecida, pois um cadeado sobre uma página que extrai recursos de texto simples é um sinal falso.

Etapa 4: o que o HSTS adiciona e o que não adiciona

HSTS é uma política do site e não uma preferência do navegador, e é o único mecanismo aqui que sobrevive a um http:// digitado em um perfil novo. Depois que um navegador vê um cabeçalho Strict-Transport-Security para um host, ele reescreve as solicitações posteriores para https antes de enviá-las, que é exatamente a propriedade que você deseja. Não faz nada para um host que o navegador nunca visitou e nada para um nome de host diferente que serve o mesmo aplicativo.

Verifique o que a origem envia com curl -sSI https://example.com | grep -i strict-transport-security. Um cabeçalho ausente é uma alteração no servidor e não algo que um cliente possa instalar. Se estiver presente, leia max-age e se includeSubDomains está definido, porque uma idade máxima curta expira entre as visitas e um includeSubDomains ausente deixa todos os subdomínios desprotegidos. A RFC 6797 define como um agente de usuário aplica a política e o que ele pode ignorar. O pré-carregamento é um compromisso separado, portanto, verifique o status por meio da API hstspreload.org antes de prometer a alguém que um domínio está na lista.

Verificação e reversão

A reversão é barata para as configurações do cliente e cara para HSTS. Desativar o modo somente HTTPS restaura o comportamento anterior imediatamente; uma idade máxima longa não, e os visitantes que já a receberam continuam atualizando até que ela expire.

Portanto, verifique a ordem antes de encerrar. Recarregue de um cache frio e confirme se a primeira solicitação no painel de rede é https sem redirecionamento anterior. Em seguida, verifique um subdomínio, porque includeSubDomains é onde essas políticas geralmente são mais restritas do que o suposto. Em seguida, verifique uma página que extrai recursos de terceiros, já que o conteúdo misto é a falha que sobrevive a todas as outras correções.

Se a primeira solicitação ainda for http depois de tudo isso, o cliente não é mais a variável: o link que as pessoas clicam é. Pesquise nos locais que você controla o formato http do nome do host, atualize-os e teste novamente com a mesma recarga de cache frio. Mantenha a questão da VPN separada, porque o túnel altera quem pode ver a solicitação e nunca altera se a solicitação está criptografada. A linha a ser colocada no ticket é que a primeira solicitação é a que importa, e um redirecionamento é apenas um recibo de uma solicitação já enviada.

Artigos relacionados