segunda-feira, 22 de fevereiro de 2016

certificado SSL gratuito para o seu site


Let’s Encrypt: certificado SSL gratuito para o seu site!


Logo da Let's Encrypt

Criada pelo grupo de pesquisa Internet Security Research Group (ISRG), a Let’s Encrypt está sendo patrocinada por gigantes da área de tecnologia, dentre elas: Mozilla, Facebook, Cisco, Akamai, Automattic, entre outras.
Ao habilitar um certificado SSL no seu site, além de torná-lo mais seguro, você melhora o posicionamento dele junto ao Google, tendo em vista que no ano passado a empresa sinalizou que o uso de HTTPS é um dos fatores considerados na elaboração do seu ranking.
Atualmente o projeto se encontra na fase de testes (public beta). Entretanto, ele já está funcionando adequadamente, como vocês podem observar no certificado SSL que tenho habilitado aqui no blog :-)
Screen Shot 2015-12-07 at 8.34.17 PM
Sem mais delongas, para a criação de um certificado são necessários quatro passos: clonar o repositório da Let’s Encrypt, executar uma linha de comando para gerar o certificado do seu domínio, criar um arquivo de confirmação no seu servidor web e, por fim, habilitar o certificado SSL no seu servidor web.

1. Clonando o repositório da Let’s Encrypt

Use os comandos abaixo para clonar o repositório no seu servidor web e entrar no diretório aonde ele foi baixado.
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt

2. Executando a linha de comando para gerar seu certificado

De acordo com o manual, é possível gerar e instalar um certificado SSL automaticamente usando o seguinte comando:
$ sudo ./letsencrypt-auto
No entanto, confesso que não cheguei a testar dessa forma.
Como tenho preferência por gerar o certificado manualmente para então habilitá-lo no servidor web, utilizei o seguinte comando:
$ sudo ./letsencrypt-auto certonly -d tiagohillebrandt.eti.br -d www.tiagohillebrandt.eti.br --manual
Você pode adicionar vários domínios no mesmo SSL (UCC) usando o parâmetro -d.
Ao executar esse comando, perceba que inicialmente ele vai instalar alguns softwares no seu servidor (dependências), e depois ele irá pedir autorização para publicar o IP do seu servidor como o requisitante do certificado.
Após concordar, vamos para o próximo passo.

3. Criando o arquivo de confirmação no seu servidor web

Após autorizar a publicação do IP, ele exibirá uma mensagem no terminal parecida com esta:
Make sure your web server displays the following content at
http://tiagohillebrandt.eti.br/.well-known/acme-challenge/26bs4LFnqRp2eGXMaNeAkH19qLNz_peCi_aKG4RvsUQ before continuing:
26bs4LFnqRp2eGXMaNeAkH19qLNz_peCi_aKG4RvsUQ.YApOMO_Gv37-hGfMP3mRFZ8yM3n1JddQGUFYO7c3R5I
Press ENTER to continue
Ou seja, ela está pedindo para você criar um arquivo no seu servidor web (no nosso exemplo: .well-known/acme-challenge/26bs4LFnqRp2eGXMaNeAkH19qLNz_peCi_aKG4RvsUQ) e adicionar o texto em vermelho dentro desse arquivo.
Depois disso, acesse a URL (destacada em laranja no exemplo acima) no seu navegador. Ao carregar a página, o conteúdo dentro dela deverá ser aquele texto na posição destacada em vermelho. Após confirmar, volte ao terminal e pressione enter.
Feito isso, o certificado SSL será gerado e disponibilizado no seguinte diretório:
/etc/letsencrypt/live/tiagohillebrandt.eti.br/
Esse certificado terá validade de três meses. Depois disso será necessáriorenová-lo.

4. Habilitando o certificado SSL no seu servidor web

Para habilitar no seu NGINX, adicione as seguintes linhas no contextoserver do arquivo de configuração do seu site:
listen 443 ssl;

ssl on;
ssl_certificate /etc/letsencrypt/live/tiagohillebrandt.eti.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tiagohillebrandt.eti.br/privkey.pem;
Feito isso, basta reiniciar o seu NGINX.
Já para habilitar no Apache, basta usar diretivas equivalentes.

Extra. Habilitando o HTTP/2 com OCSP stapling e cache de sessão no NGINX 1.9.5+

Se você está usando o NGINX 1.9.5 ou superior, pode querer habilitar o HTTP/2, que tem uma performance muito melhor do que o HTTP/1.1.
Além disso, o OCSP stapling e o cache de sessão ajudam a melhorar ainda mais a performance das suas requisições HTTPS.
listen 443 ssl http2;
ssl on;
ssl_certificate /etc/letsencrypt/live/tiagohillebrandt.eti.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tiagohillebrandt.eti.br/privkey.pem;
ssl_stapling on;
ssl_stapling_verify on;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 10m;
Feito isso, basta reiniciar o NGINX.
Se você quer entender um pouco mais sobre HTTP/2 e performance em geral, recomendo que confira os slides da minha apresentação sobre desempenho de servidores na WordCamp São Paulo 2015.

Cadê o cadeado verde?

Ao acessar um site HTTPS, um cadeado verde deve ser exibido na barra de endereços do seu navegador. O cadeado verde significa que o certificado SSL é válido e, além disso, que todos os elementos dentro daquela página estão sendo carregados por meio de uma conexão segura.
Portanto, se você acessar seu site via HTTPS e ele não estiver exibindo esse cadeado, você pode utilizar este site para descobrir qual é o problema: https://www.whynopadlock.com/
E é isso galera! Qualquer dúvida, sugestão ou xingamento, só jogar nos comentários :) Abraço!
Fontes: https://tiagohillebrandt.eti.br/lets-encrypt-certificado-ssl-gratuito-para-seu-site.htm

Tag: estagiariodesuporte, estagiario de suporte