migrando-para-https

Como e porque migrei meu site para HTTPS. E você também deveria!

Eu migrei o meu site para HTTPS e nesse post vou explicar como e porque você que é  desenvolvedor ou do marketing deveria fazer mesmo para ter melhores resultados. Isso mesmo, se você é desenvolvedor já passa da hora de você desenvolver em um ambiente com SSL/HTTPS . E você que é do marketing, se deseja ter uma audiência mais qualificada e gerar mais impactos no negócio também. Então vamos explicar para cada uma das perspectivas as razões.

 

Mas o que ésse HTTPS ?

Primeiro vamos falar do HTTP ( Hyper text Transfer Protocol ) . Como o nome já diz, é um protocolo que define como sistemas de informação trocam dados entre dispositivos de redes. Uma vez que dois dispositivos estejam conectados e se comunicando sob este protocolo, eles passam a falar a mesma língua e a informação flui entre eles.

O problema desse protocolo é que a informação flui de forma aberta, ou seja, para quem possui conhecimento e também más intenções, é possível interceptar essas informações. Nesse ponto que falamos do HTTPS ( Hyper text Transfer Protocol Secure ), que é outro protocolo seguindo os mesmos padrões do HTTP, porém adicionando uma camada a mais de segurança na transferências dos dados.

Os dados transferidos entre dispositivos sobre protocolo HTTPS são criptografados, de forma bem grosseira significa que somente as duas pontas que estão se comunicando entendem um a língua do outro.  Mas não sejamos radicais, nenhuma tecnologia é 100% segura, o fato é que o HTTPS troca informações criptografadas, que são mais seguras que o HTTP.

No nosso dia a dia de usuário de internet, podemos reconhecer um site que usa protocolo HTTPS pela barra de endereço do navegador, quando a mesma apresenta um cadeado com um fundo verde antes do endereço do site. Deixo um exemplo abaixo ( o/ ):

 

barra-https

 

Porque o marketing deveria estar preocupado com o  HTTPS ?

Eu trabalho essencialmente no mercado imobiliário a 7 anos, mas já dei consultoria de SEO para algumas empresas do mercado de varejo em nichos como e-commerce de cosméticos e roupas. Em todos eles a maior parte da audiência do site sempre vinha de trafego orgânico, ou seja do Google. Isso mesmo, as pessoas que pesquisam no Google por alguma informação e chegam até o site das referidas empresas. Raras foram as empresas que o tráfego orgânico não era superior a 50% do total. Então estar bem posicionado no Google é vender mais.

Não é de hoje que o Google anunciou que o protocolo HTTPS é um fator de ranqueamento para os seus resultados de busca. Foi anunciado em agosto de 2014 no post HTTPS as a ranking signal no blog do Google Webmaster central . O Google que é centrado no que é melhor para o usuário, passou a entender que sites que usam HTTPS possuem um condição de oferecer uma experiência mais segura.

 

“Em agosto de 2014 o Google anunciou que o HTTPS é um dos fatores de ranqueamento para o seus resultados de busca”

 

Então basicamente é isso, sites que usam HTTPS tem uma chance de se posicionar melhor nos resultados do Google. Mas nem tudo é tão simples, uma url com HTTPS para o Google é diferente de uma que usa http, há um certo risco se não for tomada as devidas precauções de você migrar seu site para HTTPS e perder tráfego orgânico ao invés de ganhar. Mas isso eu vou explicar mais a frente como se prevenir.

 

Porque os desenvolvedores deveriam estar olhando para o HTTPS ?

Em minha jornada de desenvolvedor, antes eu pensava que apenas sites que manipulavam informações extremamente importantes precisam ter seus ambientes protegidos com SSL/HTTPS , como bancos e e-commerce, hoje me apavoro em como eu pensava isso. Outro fator que minha ignorância desprezava é que eu pensava que usar HTTPS era equivalente a ter que investir muito em infraestrutura de TI. E por último, mas não menos importante eu também achava que usar o protocolo HTTPS deixaria a minha aplicação mais lenta por ele ter uma camada a mais de controle entre cliente/servidor.

Enfim, tudo isso que citei é mito. Toda a informação que trafega na internet deveria ser criptografada, indiferente da origem ou objetivo, e dito isso os usuários agradecem, ainda mais hoje com tantas invasões e interceptações que se tem notícias. O outro ponto é que obter um certificado SSL/HTTPS não é caro nem para a pessoa física, quanto muito para uma empresa.

Mas o que quero focar é que se você é desenvolvedor front-end ou backend, não importa. As tecnologias que estão evoluindo atualmente estão valorizando as aplicações que usam HTTPS, e de uma forma que você não consegue utilizar certas features se não estiver em um ambiente que use HTTPS. Logo, as aplicações que você desenvolve com o passar do tempo não conseguiram evoluir ou vão disparar alarmes de inseguras para os clientes que fazem uso do que você desenvolve.

Me chamou atenção esse ano no Google IO e também no Google Dev Summit que o Google vai permitir em futuro bem próximo as APIs do Chrome como Geolocalization, Service Workers, App Cache e Local storage apenas para aplicações que estejam rodando sob HTTPS. E você vai ficar sem usar esses recursos ? Em mundo onde performance e mobilidade é só o que se fala e praticamente tudo está virando uma API.

 

“O Google anunciou que em breve APIs do Chrome como Geolocalization, Service Workers, AppCache e LocalStorage só estarão disponíveis para aplicações que usam HTTPS”

 

Como eu migrei meu site WordPress para HTTPS

Para começar, eu precisei comprar um certificado SSL. Há alguns tipos de certificado que você pode comprar.  Eu apliquei no meu site o certificado SSL de validação de domínio. Não vou entrar em detalhes de qual tipo aplicar, mas você pode ter uma base mais detalhada no link SSL: Tipos de certificados para proteger seu site.

Vale ressaltar que eu paguei R$13,95 na br.godaddy.com/SSL , e nada mais, válido por um ano. Esse é outro detalhe, os certificados SSL tem validade, então indiferente do tipo que você escolha ele tem um período de vigência.

Vou explicar o processo da Godaddy, mas outros sites que vendem certificados SSL não vão escapar muito dessa regra. No momento em que estou me cadastrando, preciso informar ao certificador ( a Godaddy ) a minha chave CSR ( Certificate Signing Request ).

O meu site é hospedado na Digital Ocean e todo o ambiente foi configurado por mim, apenas porque eu gosto de mexer para não perder o jeito e também para algumas experiências loucas que faço de tempo em tempo. Meu ambiente é um Sistema operacional  Linux com Debian 8 e um Servidor Apache 2.4. Os passos a seguir que vou demonstrar são para esse ambiente, mas em versões CentoOS também vai funcionar.

 

Gerando o CSR ( Certificate Signing Request )

O CSR é um arquivo de texto criptografado, gerado pelo servidor web do seu site, contendo as informações para a solicitação do seu Certificado Digital. O CSRcontém as informações da sua empresa (nome, departamento, cidade, estado, país) e a URL onde o certificado SSL será utilizado.

O CSR é gerado no servidor, então pode variar de um sistema operacional para outro, o método que utilizei é para servidores Linux. conheço. Para gear o CSR basta digitar no terminal:

 

openssl req -new -newkey rsa:2048 -nodes -keyout seudominio.key -out seudominio .csr

 

Após digitar esse comando alguns dados seus ou da sua empresa serão requisitados, basta preencher os dados e confirmar para que as chaves sejam geradas. Duas chaves serão geradas nesse processo conforme a imagem abaixo:

 

chave-csr

 

Caso seu servidor não tenha o openssl instalado basta digitar um sudo apt-get install ssl  . Caso você não esteja usando o apache como eu, deixo esse para gerar o CSR para os servidores mais populares.

 

Fazendo o download e instalando o  certificado

Passada as etapas de pagamento do certificado, para que o certificador possa gerar o seu certificado SSL ele precisa do seu CSR, no caso Godaddy abriu um campo de texto para que eu pudesse colocar o conteúdo e informar o meu servidor, que no caso é o Apache. E só isso, após inserir o CSR ele confirmar qual é o seu domínio desejado e o certificado é criado. Já podemos fazer o download do certificado. O certificado que você deve instalar no seu servidor é baseado em 2 arquivos com a extensão crt.

O jeito mais simples de configurar o SSL no Apache é dentro do próprio arquivo de virutalhosts . Por padrão o suporte a SSL no apache vem desabilitado, então para habilitar o ssl digite o comando abaixo:

 

a2enmod ssl

 

Feito isso vá até o arquivo do seu virtualhost, no meu caso fica em /etc/apache2/sites-available/default-ssl.conf e adicione ou altere caso já exista as seguintes linhas:

 

  • SSLCertificateFile – Arquivo crt que você fez o download
  • SSLCertificateKeyFile – Este é o arquivo que você gerou com o nome do seu domínio e extensão .key
  • SSLCertificateChainFile – Arquivo crt que você fez o download
  • SSLCACertificateFile – Arquivo crt de bundle que você fez o download.

 

Coloque os aquivos que você fez o download em lugar apropriado e seguro dentro do servidor. Certifique-se também que seu virtual está configurado para a porta 443 conforme imagem abaixo:

 

virtual-hosts-apache

 

Feito essas etapas basta dar um reload no apache com o comando abaixo:

 

service apache2 reload

 

Pronto, seu servidor já está configurado para servir páginas com protocolo HTTPS. Mas isso acaba gerando um problema de SEO para você , porque as páginas sob HTTP também estão funcionando, ou seja, no momento para os motores de busca podemos dizer que você tem 2 sites com o mesmo conteúdo, é isso é ruim.

 

Redirecionando todo o conteúdo HTTP do site para HTTPS

Essa é uma das tarefas mais importante ao meu ver atualmente quando se migra um site para HTTPS, que é a tarefa de mapear as suas URL que eram acessadas via HTTP para que sejam redirecionadas para HTTPS. Isso porque como descrito na ajuda do Google Search Console, o Google trata a mudança para HTTPS como se vocês estivesse colocando um novo site no ar.

Como já mencionei, meu site é um WordPress rodando sob um servidor Apache e que roda em um servidor Linux Debian 8. Dito isso a primeira coisa que fiz foi alterar na raíz do meu site o arquivo .htaccess para redirecionar todas as requisições que não forem feitas por HTTPS  para o mesmo destino em HTTPS.

 

RewriteCond %{HTTPS} !=on

RewriteRule ^ HTTPS://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

 

Esse código está testando se a requisição é feita em HTTPS e caso contrário está redirecionando com um código de 301, que é o movido permanentemente.

 

Mapeando as principais URL do seu site

Para que você não perca trafego em uma migração para HTTPS é fundamental que você identifique quais são as principais páginas de destino do seu site, isso é aquelas que recebem o maior volume de tráfego com origem de tráfego orgânico e teste se elas estão redirecionando com código 301 para a nova URL em HTTPS.

Uma maneira de você validar se suas urls HTTP estão sendo redirecionadas para HTTPS com código 301 é usando um http header checker , já fica de dica esse da Agência Mestre.

 

http-header-check

 

Como podem ver eu teste a url antiga do meu site e a ferramenta indica que ele está sendo redirecionada para o HTTPS.

 

Cuidados com o WordPress na migração para HTTPS

O WordPress tem configurado em banco de dados a url padrão do site, então você deve alterar em Configurações -> Geral a url do seu site colocando HTTPS conforme imagem abaixo:

 

configuracoes-url-wordpress

 

Outro problema que eu tive, mas não sei dizer se todos terão é com o gerenciador de media do WordPress. Todas as imagens estavam setadas com o caminho absoluto e com HTTP , e isso desqualifica a validação do HTTPS. Então para não ter que alterar um a um manualmente eu executei a query abaixo, substituindo todas as entradas HTTP por //, que faz o navegador enviar as requisições pelo protocolo padrão que a página página  está.

 

UPDATE wp_posts

SET    post_content = ( Replace (post_content, 'src="http://', 'src="//') )

WHERE  Instr(post_content, 'jpeg') > 0

       OR Instr(post_content, 'jpg') > 0

       OR Instr(post_content, 'gif') > 0

       OR Instr(post_content, 'png') > 0;

 

Resolução de problemas

Meu conselho é que depois que você instalar o certificado, teste seu site com um simples index.html em branco, assim vai saber se a instalação funcionou. Isso porque qualquer arquivo incluído no seu código que não seja de uma origem HTTPS vai invalidar seu certificado.

Tenha sempre um ambiente de homologação para validar tudo antes de migrar, não tente fazer tudo em produção, o risco é muito grande.

Acompanhe diariamente o número de páginas indexadas pelo Google, senão vai cair e também as páginas 404 pelo Google Search Console. Acompanhe também o tráfego geral do seu site no Google Analytics ou outra ferramenta que de mensuração que você utilize.

Isso é tudo que eu tinha para dizer sobre a migração do meu site para HTTPS, porque eu migrei e porque você independente do mercado de atuação deveria estar fazendo o mesmo.

 

E você o que falta para migrar seu ambiente para SSL/HTTPS ?