Quero te mostrar como instalar, configurar e também manter atualizado um certificado SSL grátis da certificadora Let’s Encrypt em um Centos 7 rodando Apache como seu servidor web.
Eu acredito que você já deve saber a função dos Certificados SSL, caso não saiba, recomendo que leia esse artigo [O que é Certificado SSL: O guia definitivo], aqui você pode tirar todas suas dúvidas sobre o que é, como funciona e quais os certificados mais adequados para o seu tipo de negócio.
A Let’s Encrypt é uma autoridade certificadora (CA) mantida por grandes corporações como Cisco, Facebook, Akamai entre outras. Ela oferece Certificados SSL gratuitos de instalação e validação automática, atualmente a maioria dos browsers já suportam e identificam os certificados como válidos.
Ou seja, agora acabaram as desculpas para deixar certificados auto-assinados ou expirados em suas aplicações, utilize certificados válidos e mostre que você se preocupa com as informações trafegadas nas suas aplicações.
Abaixo vou deixar um tutorial completo de como instalar Certificado SSL gratuito, o Apache e uma instalação limpa do CentOS 7.
E-BOOK
Guia Prático Certificado SSL
Reunimos nesse material o melhor conteúdo sobre Certificado SSL da web
Instalar Certificado SSL gratuito no Apache (CentOS)
Instalando dependências para a instalação do cliente da Lets Encrypt
yum install epel-release -y rpm -Uvh https://rhel7.iuscommunity.org/ius-release.rpm yum --enablerepo=ius install git python27 python27-devel python27-pip python27-setuptools python27-virtualenv -y cd /root/ git clone https://github.com/letsencrypt/letsencrypt
Instalando o Apache
yum install httpd httpd-tools mod_ssl -y
Neste momento estou criando um arquivo virtual host para hospedar a aplicação, no caso abaixo fiz uma demonstração:
vim /etc/httpd/conf.d/rafael.conf
Com o seguinte conteúdo
<VirtualHost *:80> DocumentRoot "/var/www/rafael" ServerName demo.rafaelandrade.org </VirtualHost>
Lembre de alterar o arquivo do conf do Apache para ele escutar em ambas as portas 80 e 443
vim /etc/httpd/conf/httpd.conf
Alterando a linha
Listen 80 para Listen 80 443
Reinicie o serviço do httpd para aplicar as configurações e o serviço iniciar a escuta na porta 443
systemctl restart httpd
Neste momento estou efetuando a instalação do cliente do Let’s Encrypt
./root/letsencrypt/letsencrypt-auto
Como o comando acima já informa (auto), ele irá automaticamente detectar as configurações criadas no apache, para emitir os certificados necessários, seguem os passos utilizados na demonstração.
Simplesmente está pronto, após passar pelas seleções acima o certificado está configurado e já pode ser acessado.
Primeiramente efetue o restart do seu servidor apache.
systemctl restart httpd
Acesse pelo seu browser o endereço informado pela última caixa acima.
No meu caso, esta demonstra diretamente https://demo.rafaelandrade.org pois eu já tinha configurado o virtual host desta forma.
Isso funciona pois ele automaticamente já configurou os arquivos do apache veja o conteúdo do arquivo criado pelo let’s encrypt dentro dos virtuais hosts do apache.
<IfModule mod_ssl.c> <VirtualHost *:443> DocumentRoot "/var/www/rafael" ServerName demo.rafaelandrade.org SSLCertificateFile /etc/letsencrypt/live/demo.rafaelandrade.org/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/demo.rafaelandrade.org/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateChainFile /etc/letsencrypt/live/demo.rafaelandrade.org/chain.pem </VirtualHost> </IfModule>
Você pode fazer o teste e verificar se a instalação do certificado foi feita corretamente através dessas duas ferramentas:
https://www.sslshopper.com/ssl-checker.html
https://www.ssllabs.com/ssltest/
Veja abaixo o certificado ssl grátis já instalado e configurado:
Veja também o prazo de validade de 90 dias, sim este certificado ssl grátis possui validade de apenas 90 dias, e precisa ser atualizado em um período inferior a este, mas fique tranquilo, abaixo eu te mostro como fazer essa atualização.
Caso você precise redirecionar todo o tráfego do site para https já no primeiro acesso, configure seu virtualhost dessa forma:
<VirtualHost *:80> DocumentRoot "/var/www/rafael" ServerName demo.rafaelandrade.org Redirect permanent / https://demo.rafaelandrade.org </VirtualHost>
Lembrando que sua aplicação também deve estar configurada para trabalhar em https, muitas vezes não adianta configurar somente o seu virtualhost, no nosso blog tem alguns tutoriais que mostram como fazer essa função chamada Full HTTPS em aplicações como: WordPress, Magento e OpenCart
Lembre-se sempre de reiniciar o serviço do apache para ativar as configurações.
systemctl restart httpd
Renovação automática do certificado
Lembre-se que os certificados SSL gratuitos emitidos pela Let’s Encrypt possuem validade de 90 dias, e você não quer renovar manualmente correto?
crontab -e
# Atualizar cliente do lets encrypt 00 5 * * 1 cd /root/letsencrypt && git pull # Atualizar certificado SSL 00 6 * * 1 /root/letsencrypt/letsencrypt-auto renew >> /var/log/lets-encrypt-renew.org
Abaixo mostro como fazer para adicionar mais nomes (SANs) ao mesmo certificado, caso você possua mais de um site ou aplicação instalada no mesmo servidor:
Adicionando um novo vhost e também um novo certificado.
Lembre-se de criar o virtual host, conforme abaixo:
<VirtualHost *:80> DocumentRoot "/var/www/demo2" ServerName demo2.rafaelandrade.org </VirtualHost>
Executar novamente a configuração do cliente, para a emissão do certificado gratuito.
./root/letsencrypt/letsencrypt-auto
Será identificado automaticamente que o servidor tem um virtual host adicional, conforma a caixa abaixo:
Limites do lets encrypt
1. No exemplo usamos dois nomes “demo” e “demo2”, o Let’s Encrypt tem um limite de 100 nomes em um mesmo certificado;
2. A quantidade de requisições é de 5 por SEMANA para cada domínio, nesse caso usei o domínio rafaelandrade.org, ou seja você pode certificar 5 x 100 = 500 páginas por semana 🙂
3. Você pode requisitar até 5 certificados para o mesmo FQDN por semana, ou seja caso você solicite rafaelandrade.org e www.rafaelandrade.org, até 5 destes certiificados com FQDN completos podem ser utilizados ao mesmo tempo, mas onde vou usar isto? Normalmente é usado em ambientes com Loadbalance
4. Por IP podem ser requeridos até 500 certificados a cada 3 horas, caso você necessite de um ambiente de testes por favor utilize o Staging Client neste link https://community.letsencrypt.org/t/testing-against-the-lets-encrypt-staging-environment/6763
5. Não existem limites de emissões para diferentes domínios, obedecendo somente os limites acima descritos POR DOMÍNIO:
https://www.linode.com/docs/guides/install-lets-encrypt-to-create-ssl-certificates/
Se você gostou deste conteúdo, peço que ajude mais pessoas a instalar o Certificado SSL gratuito no Apache, compartilhando este artigo com seus amigos.
Quer saber mais coisas sobre segurança? Acesse a categoria Segurança do Blog.
Caso tenha alguma dúvida sobre o assunto, por favor deixe seu comentário que terei o prazer de conversar com você a respeito.
Muito bom, conseguir fazer facilmente devido a boa, simples e detalhada explicação sobre instalação, obrigado e parabéns pelo trabalho
Olá @disqus_vRy2g8FE4t:disqus, fico feliz que gostou do conteúdo. Seu feedback é importante para nós. ? Qualquer dúvida estamos a disposição.