HTTP e HTTPS: o que é e como funciona
HTTP e HTTPS são os protocolos que o navegador usa para pedir e receber páginas de um servidor. O HTTP (HyperText Transfer Protocol) envia tudo em texto aberto; o HTTPS é o mesmo HTTP dentro de uma conexão criptografada pelo TLS, que também confirma a identidade do site.
Como funciona um pedido HTTP?
Todo acesso é uma conversa de duas partes: o navegador faz uma requisição e o servidor web devolve uma resposta, que traz um código de status e o conteúdo. Veja o formato simplificado:
GET /contato/ HTTP/1.1
Host: www.seunegocio.com.br
HTTP/1.1 200 OK
Content-Type: text/html
O código de status resume o resultado. Os mais comuns são:
- 200: deu certo, a página foi entregue;
- 301: a página mudou de endereço de forma permanente, veja o redirecionamento 301;
- 404: o endereço não existe no servidor, o erro 404;
- 500: o servidor falhou ao processar o pedido, o erro 500.
O que o HTTPS acrescenta ao HTTP?
O HTTPS acrescenta três proteções: criptografia, para que ninguém no caminho leia os dados; integridade, para que ninguém os altere sem ser notado; e autenticação, pois o servidor prova ser o dono do domínio por meio de um certificado SSL. É isso que protege senhas, formulários e pagamentos. Lembre que o cadeado garante a conexão, e não que o site seja confiável.
Como ativar o HTTPS em um site?
- Instale um certificado para o domínio. Muitas hospedagens emitem um gratuito.
- Redirecione o HTTP para o HTTPS com um 301, para que quem digitar o endereço antigo chegue à versão segura.
- Em um site WordPress, troque o endereço do site para
https://em Configurações, Geral. - Corrija o conteúdo misto: scripts, estilos e imagens ainda chamados por
http://. A MDN explica que navegadores bloqueiam scripts e estilos inseguros em páginas HTTPS.
Um exemplo de redirecionamento do HTTP para o HTTPS em servidores que leem o arquivo .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Existe ainda o cabeçalho HSTS, que manda o navegador usar sempre HTTPS naquele domínio. Ele é difícil de desfazer, porque o navegador guarda a regra pelo tempo definido, e a MDN recomenda testar antes com um prazo curto, como 300 segundos. Veja o cabeçalho Strict-Transport-Security.
