Artigo original: https://www.freecodecamp.org/news/free-https-c051ca570324/

Escrito por: Ayo Isaiah

Em 2018, o Google anunciou que o Chrome passaria a marcar todas as páginas HTTP como "Não seguras" em sua versão 68.

Nota da tradução: A versão mais recente do Chrome no momento desta tradução é a versão 114.
KJlpSH4gFVWnNr3gacsE9dQS1bnioHJHOdQK
A mudança na barra de endereços do Chrome

Este foi o empurrão mais forte para direcionar a web para a criptografia por padrão e foi esperado há muito tempo.

Embora haja muitas evidências que mostram por que todos deveriam entrar na tendência do HTTPS, muitas pessoas ainda não enxergam o valor em oferecer seus sites de maneira segura.

"Por que eu preciso disso para um blog?"

Já escrevi sobre o valor do HTTPS anteriormente (texto em inglês), mas apenas para reiterar:

Se você não estiver convencido, leia o DoMysiteneedhttps.com (texto em inglês) para obter a visão completa do porquê todo site da web deve ter segurança.

Se você ainda não se convenceu, saiba a vida está prestes a se tornar muito mais difícil para você.

Em um esforço para afastar os usuários de sites inseguros, os navegadores desencorajam sites inseguros em certos contextos.

O Chrome 56 iniciou essa tendência ao marcar as páginas com campos sensíveis de login como "Não seguro", enquanto o Chrome 62 estendeu esse aviso a todas as páginas HTTP que continham qualquer tipo de campo de entrada. Além disso, o aviso é exibido em todas as páginas HTTP no modo de navegação anônima, independentemente de conterem um campo de entrada ou não.

O Firefox também alerta os usuários quando tentam preencher um formulário de login inseguro.

image-3-1

O Chrome decidiu, a partir de 2018, colocar esse aviso em todas as páginas HTTP daqui para frente. O ícone ao lado do rótulo "Não seguro" mudou e o texto passou a ficar em vermelho para enfatizar ainda mais que as páginas HTTP não são confiáveis.

image-4-1

Para evitar que os usuários vejam este aviso em seu site, tudo o que você precisa é obter um certificado SSL válido. A boa notícia é que fazer isso não é tão difícil ou caro como costumava ser. Na verdade, vou mostrar como implantar HTTPS em seu site gratuitamente usando o Cloudflare. Não vai demorar muito.

Por que usar o Cloudflare?

O CloudFlare pode ajudá-lo a proteger um certificado SSL gratuitamente, independentemente da infraestrutura do lado do servidor que você possui. Ele também funciona para sites hospedados em plataformas que não fornecem acesso ao servidor, como GitHub Pages, Ghost e similares.

Você não precisa instalar nada nem escrever código. Isso o torna uma ótima opção para implantar HTTPS em seu site e o tempo de configuração não deve levar mais de 10 minutos.

Ele também fornece uma infinidade de outros benefícios em segurança e desempenho do seu site que não abordarei aqui. Falarei um pouco, no entanto, a respeito de como tudo funciona para que você tenha uma boa ideia de como ele é capaz de fazer todas essas coisas.

Como funciona o Cloudflare

O Cloudflare fica bem no meio do tráfego entre os visitantes do seu site e seu servidor. Os visitantes podem ser humanos comuns, rastreadores e bots (como bots de mecanismos de pesquisa) ou hackers. Ao agir como um intermediário entre seu servidor da web e os visitantes de seu site, o Cloudflare ajuda a filtrar todo o tráfego ilegítimo para que apenas as coisas boas passem.

Agora você deve estar se perguntando se tudo isso pode ter um efeito adverso na velocidade do seu site, mas é exatamente o contrário. O Cloudflare tem centros de dados em todo o mundo. Portanto, usará apenas o endpoint mais próximo do visitante, o que deve tornar seu site muito mais rápido do que antes.

Lc-xzCU5Cw0u2x-u8zDwE3TFVbv-aUj-JjqK
Distribuição da rede global do Cloudflare

Agora que sabemos como o Cloudflare funciona, vamos dar uma olhada em como configurar um site em sua infraestrutura e como acessar o HTTPS gratuitamente. O foco, aqui, será nos recursos que o Cloudflare fornece gratuitamente, mas observe que os planos pagos também estão disponíveis com vários recursos extras.

Configurando um novo site

Depois de se cadastrar no Cloudflare, a primeira coisa a fazer é adicionar um domínio e escanear [scan] os registros DNS. [disponível em português]

o1eN1nEZhtbcRaATWZ1p-nQUCwFBsrWEpalQ

Depois que a verificação for concluída, todos os registros DNS no domínio serão exibidos. Você pode escolher os subdomínios nos quais deseja habilitar o Cloudflare e fazer as modificações desejadas. Quando estiver pronto, clique em Continue para ir para a próxima etapa.

XTjdrU156BPJ2Foa2rZuyNAjs53doMdCrJRN

Selecione o plano gratuito (Free Website) e clique em Continue.

Nc7rVPCFdQ9LKxx-oEFCj-3zlrjrQqgNQvcO

Em seguida, você precisará alterar os Nameservers em seu provedor de registro de domínio para os fornecidos pelo Cloudflare. O processo para fazer isso em cada provedor de registro de domínio é um pouco diferente. Portanto, verifique com o seu provedor.

xnHu2o4MJrpckhGOvUsDcUoGz0UuujOvxDsU

Veja como fica no provedor Namecheap:

-C7vA1eZcIpP3B5vcq-qYK1eC1Y8Khq8PI9H
Alterando nameservers no provedor Namecheap

Agora, você deve esperar que as alterações do nameserver terminem de se propagar. Clique em Recheck Nameservers depois de um tempo para ver se seu site agora está ativo no Cloudflare. Essa é a parte mais demorada da configuração e pode levar até 24 horas, mas, na minha experiência, levou menos de 5 minutos.

9oHlGNn4TMApCJw1v2GWyQ9ulTA-egOhF6Ew

Depois que as atualizações do nameserver forem validadas pela Cloudflare, seu site se tornará ativo no serviço.

1AgkTO0uBz8lv0fAdrJhGXz8Rg5nkPfaZDVO

Se você quiser ter certeza absoluta de que suas configurações de DNS se propagaram em todos os lugares, o What's My DNS fornece uma maneira de verificar qual endereço IP seu domínio resolve em locais diferentes.

Você também pode usar dig ou nslookup na linha de comando para verificar a configuração de DNS do seu domínio.

WAC1LFbxuDtbk-hXxrqot4vUKIxl6b3yFUi9
Na seção ANSWER SECTION, você verá para qual endereço IP seu domínio resolve

Assim, você pode ter certeza de que todo o tráfego que vai para o seu domínio agora está sendo roteado pelo Cloudflare.

Antes de começar a configurar o Cloudflare, certifique-se de que seu navegador não esteja usando os registros DNS antigos de seu cache. No Chrome e no Firefox, você pode fazer isso limpando o histórico do navegador.

Obtendo SSL gratuitamente

O SSL ainda é um serviço premium e muitas Autoridades Certificadoras cobram quantias significativas antes de emitir um certificado SSL. Não é algo que você possa obter de graça em algum lugar, mas isso está mudando rapidamente na indústria.

kIkCSgOncnKEkE5LClz1UeV0dVDP4i8CFZPw
A Comodo cobra US$ 99,95/ano por um certificado SSL

Agora que você tem o Cloudflare no meio do tráfego da web, você deve obter o SSL em seu domínio automaticamente. Pode levar até 24 horas para que o certificado fique ativo, mas, pela minha experiência, não demora muito.

cZyriRiq6Ao4k48mLCYMjtaLR-aHLa824hXj
Você pode verificar se o certificado do seu site está ativo nas configurações de criptografia.

Depois que o certificado se tornar ativo, carregue seu site em um navegador. Você deve ver o site servido por HTTPS e um belo cadeado verde na barra de endereços.

7ehfhEpKBWEG71hCcQY147j1bBiOQ2Q4YLSF

Se você visualizar mais informações sobre o certificado, verá a autoridade de certificação que o emitiu (a Comodo, no meu caso) e a data de validade. Uma das grandes vantagens do Cloudflare é que a renovação do certificado é feita automaticamente para você. Assim, não é preciso se preocupar.

E6A0jelflOxpON3l4OG-p16p7Qy8udwHqtps

Diferença entre SSLs Flexible, Full e Full (Strict)

O Cloudflare torna muito fácil obter o SSL em seu site gratuitamente sem configurar nada, mas nem sempre é o mesmo que servir seu site por SSL diretamente da origem.

Existem três implementações do SSL do Cloudflare. O primeiro, que você obtém por padrão, é o SSL Flexible. Nesse caso, o tráfego é criptografado entre os usuários do seu site e o Cloudflare, mas essa criptografia não chega até o servidor de origem. O Cloudflare ainda se comunica com seu servidor por HTTP simples.

Isso significa que qualquer "Man-In-The-Middle" (como provedores de rede) entre o Cloudflare e seu servidor pode ver o tráfego. Se você coletar informações confidenciais em seu site, evite usar essa opção.

Para ter criptografia até o servidor de origem, você precisa usar a implementação Full ou Full (Strict). O primeiro exige que você instale um certificado válido em seu servidor, mas a autenticidade do certificado não será verificada para que você possa obter um certificado autoassinado. Por outro lado, a implementação Full (Strict) requer que você instale um certificado SSL válido que tenha sido assinado por uma Autoridade de Certificação confiável.

Se você não deseja comprar SSL de empresas como a Comodo, pode obter certificados Origin CA gratuitos do Cloudflare, que podem ser usados com as opções Full ou Full(Strict), pois são confiáveis para o Cloudflare. Lembre-se, porém, de que esses certificados são confiáveis apenas para o Cloudflare. Deste modo, eles pararão de funcionar se você decidir retirar seu site da infraestrutura do Cloudflare.

N2mQFmlgiPlsshjqQml8DLEYBpCfSAwW0049

Se você não controlar seu ambiente de servidor (por exemplo, se seu site estiver hospedado no GitHub Pages ou plataformas semelhantes), não poderá usar as implementações Full ou Full (Strict), o que significa que, mesmo que seus usuários vejam HTTPS na barra de endereço, o tráfego não será criptografado até o servidor de origem.

É, contudo, uma grande melhoria em comparação a ter nenhum HTTPS, porque protegerá seus usuários contra "Man-In-The-Middle" no lado do client.

Fortalecer a implementação de SSL

Não importa por qual implementação SSL você opte, existem maneiras de fortalecê-la para garantir que os usuários nunca acessem seu site por HTTP inseguro. O Qualys SSL Labs é uma ferramenta que ajuda você a executar um teste em sua configuração SSL para ver se há espaço para melhorias.

f9yR7vx-50TyrX2lWQjMTOiFBwc2oUzoUr3W

Mesmo que eu tenha uma nota A em meu domínio, se você detalhar os resultados, verá que definitivamente há espaço para melhorias nos lados da Key Exchange (Troca de Chave) e da Cipher Strength (Força do Ciframento).

EflHwo97oxMhSWGIz6Gu3Xkbq32PwDsBMUl-

Vamos dar uma olhada em algumas coisas que podemos fazer no Cloudflare para fortalecer nosso SSL e obter classificações ainda mais altas.

Forçar HTTPS em todos os lugares

Depois de usar o HTTPS, você definitivamente desejará impedir que os usuários acessem seu site por meio de uma conexão insegura. Isso pode ser feito no Cloudflare redirecionando todo o tráfego HTTP para HTTPS com um redirecionamento 301.

Nas configurações de criptografia, encontre a opção Always use HTTPS (sempre usa HTTPS) e ative-a.

x1VBeW7nD6Hitnfm6QHowq2bhGAhDXZEsOHw

Habilitar a segurança estrita de transporte HTTP (HSTS)

No passado, escrevi sobre como o HSTS fortalece o SSL do seu site (texto em inglês), mas vamos revisar brevemente.

O problema ao redirecionar o tráfego HTTP para HTTPS usando apenas um redirecionamento 301 é que a solicitação inicial insegura ainda é enviada pela rede, o que significa que pode ser lida por qualquer pessoa com acesso ao tráfego.

O HSTS é um cabeçalho de resposta que resolve esse problema, informando ao navegador que ele não pode fazer uma solicitação insegura a um site por um período de tempo especificado.

Esta é a aparência do cabeçalho:

strict-transport-security: max-age=31536000


Assim que o navegador receber esse cabeçalho, ele não fará uma solicitação insegura ao seu site pelos próximos 31.536.000 segundos (equivalente a um ano). Em vez disso, todas as solicitações HTTP serão atualizadas internamente para HTTPS antes de serem enviadas pela rede.

Se você deseja impedir que todos os subdomínios sejam acessados por HTTP, precisará usar a diretiva includeSubdomains. Você também pode adicionar a diretiva preload para permitir que os fabricantes de navegadores incluam seu site diretamente no navegador como sendo apenas HTTPS.

strict-transport-security: max-age=31536000; includeSubdomains; preload


Uma vez que você tenha ativado o HSTS em seu domínio, pode ter certeza de que, uma vez que alguém tenha carregado seu site via HTTPS, eles só poderão acessá-lo através do esquema seguro dali em diante.

Portanto, antes de habilitar o HSTS em seu site, certifique-se de ter confiança de que todo o seu tráfego será servido via HTTPS. Caso contrário, você enfrentará problemas.

Para habilitar isso no Cloudflare, vá para as configurações de Crypto e role para baixo até a seção HTTP Strict Transport Security (HSTS). Clique em Change HSTS Settings [Alterar configurações de HSTS], habilite todas as opções relevantes e clique em Save.

duTVMCLbBXZtlp5QoKLu4gBuzz-qnGRH3CRS

Caso esteja se perguntando, o suporte dos navegadores para o HSTS é bastante bom.

kvk9x7Ffgtm8Hj7uJG3SNbqcVvhv6bdv0Sxy

Corrigir referências ao esquema inseguro


Se você incorporar um recurso passivo (como uma imagem) de maneira insegura em uma página segura, o navegador ainda vai carregá-lo normalmente. A única diferença é que o cadeado verde é removido da barra de endereços. Você pode ver um exemplo desse erro aqui.

PztuGkSktiMG9zRjN4Dc1Haa9ZU4ExWAkcvG

Se você verificar o console do navegador, verá algumas mensagens de aviso ou erros que apontam para o recurso que foi incorporado de maneira insegura. Nesse caso, é:

<img class="mixed" src="http://mixed.badssl.com/image.jpg" alt="HTTP image">
WD4db17NSC2rNZo4gXdamnM6A4q54CE0Y0kQ

Para corrigir isso, basta alterar o esquema para HTTPS e tudo ficará bem novamente.

<img class="mixed" src="https://mixed.badssl.com/image.jpg" alt="HTTP image">

Se você tem muito conteúdo em seu site incorporado de modo inseguro, encontrar e corrigir cada um pode ser bastante tedioso. O Cloudflare pode ajudar novamente aqui com o recurso Automatic HTTPS Rewrites.

TInVTocyWO2EfauqD6OfOpmHWb0x65C5-cq3

Para ter uma certeza absoluta de que nenhum conteúdo do seu site será servido de modo inseguro, considere implementar uma Política de Segurança de Conteúdo (Content Security Policy, CSP – texto em inglês) em seu site.

Agora, vamos ver como as alterações acima afetaram nosso relatório do SSL Labs. Rodei o teste novamente em meu domínio e agora obtemos uma classificação A+.

Q0jdFp2spaP7pWbehBEXBQJMFblx4K3YPKIT

Se você verificar as classificações individuais no gráfico, nada mudou, mas ainda assim obtemos uma implementação de SSL muito segura gratuitamente e em apenas alguns minutos.

L9vbROCIfrsio5SwUybP-eTil0YGuclRgUzy

Alternativas ao Cloudflare para SSL gratuito

Se você preferir não usar o Cloudflare por algum motivo, existem outras maneiras de tornar o seu site acessível via HTTPS de maneira gratuita. Aqui estão duas opções que você pode experimentar:

Let’s Encrypt

Se você tiver controle sobre o seu servidor, pode implantar rapidamente o HTTPS no seu site usando o Let's Encrypt. Eles oferecem certificados SSL gratuitos com validade de três meses e que podem ser renovados automaticamente.

Mesmo se você não tiver acesso ao servidor, verifique com o seu provedor de hospedagem. Alguns hosts permitem o uso do Let's Encrypt SSL sem fornecer acesso ao shell (linha de comando).

Gerenciador de Certificados Amazon AWS

A Amazon também emite e renova automaticamente certificados SSL para clientes em sua infraestrutura da Amazon Web Services (AWS). Desse modo, você pode configurar e esquecer o HTTPS em seu site se estiver usando recursos da AWS, como o Cloudfront.

Independentemente de como você implementa o HTTPS em seu site, o mais importante é garantir que você o configure o mais rápido possível para que seus usuários obtenham os benefícios de segurança que ele oferece e para não perder várias funcionalidades interessantes nos navegadores que ajudam a criar experiências melhores na web.

Se você gostou deste artigo, compartilhe com outras pessoas que possam se beneficiar da leitura. A propósito, confira o blog do autor em freshman.tech para ver mais artigos sobre desenvolvimento para a web. Obrigado pela leitura.