Linux Servidor linux Dev ops

Configurando Let’s Encrypt no CentOS 7 + Apache – Certificado SSL/HTTPS gratuito

Configurando Let’s Encrypt no CentOS 7 + Apache – Certificado SSL/HTTPS gratuito

Let’s Encrypt é um serviço fornecido pela Internet Security Research Group (ISRG), uma organização de benefício público. Alguns dos principais patrocinadores são a Electronic Frontier Foundation (EFF), a fundação Mozilla, Facebook, 3CX, Zendesk, Akamai e Cisco.

O que é Certificado SSL? o Certificado SSL é utilizado para proteger as informações dos usuários que navegam no seu website, garantindo que a conexão seja segura entre o cliente e servidor, criptografando todas as informações(dados) trafegadas e impedindo que sejam capturadas durante o acesso ao servidor que hospeda a aplicação.

Para saber se está ativado o SSL, tem que estar exibindo https em seu navegador, o cadeado ao lado do link, deve estar verde, que significa que seu certificado está validado e é confiável, quando não está validado e o mesmo assim o seu site tem conteúdo seguro, você acaba induzindo o usuário adicionar o site em lista de exceção e com isso ele pode voltar a adicionar outros sites não considerado seguro.

Iremos utilizar o CentOS 7 com o Apache.

Instalar pacotes necessários:

# yum install epel-release

Instalar o Apache, SSL e Certbot.

O Certbot serve para automatizar a emissão de certificados e a instalação sem tempo de inatividade.

# yum install httpd mod_ssl python-certbot-apache -y

Iniciar o serviço do Apache e habilitar para iniciar com o Sistema Operacional.

# systemctl start httpd
# systemctl enable httpd

Liberar portas no Firewall iPtables.

# iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Configurar o Apache: Descomente a linha abaixo:

# vim /etc/httpd/conf/httpd.conf
IncludeOptional conf.d/*.conf

Agora iremos configurar os direcionamentos do site.

# vim /etc/httpd/conf.d/linuxnaweb.com.br.conf

<VirtualHost *:80>
ServerName www.linuxnaweb.com.br
ServerAlias linuxnaweb.com.br >> Direcionar para o www.linuxnaweb.com.br
ServerAdmin webmaster@linuxnaweb.com.br >> E-mail do administrador do site
DocumentRoot /var/www/html/linuxnaweb.com.br >> Apontar para onde está o conteúdo do site
Redirect /secure https://www.linuxnaweb.com.br >> Redirecionar para https
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.linuxnaweb.com.br [OR] >> Redireciona http para https
RewriteCond %{SERVER_NAME} =linuxnaweb.com.br 
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Configurar o Host:

# vim /etc/hosts
127.0.0.1 localhost
192.32.152.10 linuxnaweb.com.br - IP externo do servidor.

Obtenha a página principal do servidor web

# curl linuxnaweb.com.br
# curl -k https://linuxnaweb.com.br

Requisitar o certificado SSL através do Let’s Encrypt

Iremos requisitar sem www e com www.

# certbot --apache -d linuxnaweb.com.br -d www.linuxnaweb.com.br

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for linuxnaweb.com.br
http-01 challenge for www.linuxnaweb.com.br
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/httpd/conf.d/linuxnaweb.com.br-le-ssl.conf
Deploying Certificate to VirtualHost /etc/httpd/conf.d/linuxnaweb.com.br-le-ssl.conf
Deploying Certificate to VirtualHost /etc/httpd/conf.d/linuxnaweb.com.br-le-ssl.conf

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): contato@linuxnaweb.com.br >> irá pedir o e-mail de contato
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A >> A para aceitar os termos

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
-------------------------------------------------------------------------------
(Y)es/(N)o: Y >> Escolha se quer receber as notícias da Certbot.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 >> Coloque 2 para direcionar o http para https.

-------------------------------------------------------------------------------
Congratulations! You have successfully enabled https://linuxnaweb.com.br and
https://www.linuxnaweb.com.br
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=linuxnaweb.com.br
https://www.ssllabs.com/ssltest/analyze.html?d=www.linuxnaweb.com.br
-------------------------------------------------------------------------------

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/linuxnaweb.com.br/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/linuxnaweb.com.br/privkey.pem
   Your cert will expire on 2018-10-30. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Some rewrite rules copied from
   /etc/httpd/conf.d/linuxnaweb.com.br.conf were disabled in the vhost
   for your HTTPS site located at
   /etc/httpd/conf.d/linuxnaweb.com.br-le-ssl.conf because they have
   the potential to create redirection loops.
 - If you like Certbot, please consider supporting our work by:
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Arquivos dos certificados fica em: /etc/letsencrypt/live

# ls -lh /etc/letsencrypt/live/

Alterar as configurações do apache para modo seguro SSL

Iremos fazer por etapas.

# vim /etc/httpd/conf.d/ssl.conf

Comentar as linhas abaixo:

# SSLProtocol all -SSLv2
# SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

Incluir as linhas abaixo, logo após linhas que comentou acima:

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On

Comentar a linha abaixo:

# Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

Incluir as linhas abaixo, logo após linhas que comentou acima:

Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

E por ultimo comente as linhas abaixo.

# Requires Apache &gt;= 2.4.11
# SSLSessionTickets Off

Incluir as linhas abaixo, no final do arquivo.

SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

Configurar ServerName no /etc/httpd/conf/httpd.conf

# vim /etc/httpd/conf/httpd.conf
ServerName www.linuxnaweb.com.br:80

Iremos testar as configurações do apache para verificar se há algum erro:

# apachectl configtest
Syntax OK

Sem nenhum erro! 😍

Vamos reiniciar o apache para aplicar as modificações feitas no arquivo:

# systemctl restart httpd

Vamos testar para verificar se está funcionando o https:

O cadeado deve estar verdinho, se não tiver verificar se tem algum item vinculado ao http://, para verificar, aperte F12 e vá até console, em console irá exibir todos os arquivos e basta alterar para resolver o problema, recomendo também limpar o cache do navegador.

osTicket

Ao clicar no cadeado verdinho, clique em mais informações, vai aparecer a tela abaixo:
Obs: estou usando o site www.linuxnaweb.com, como referência, o .com.br utilizei para realizar os testes.

osTicket

Vamos testar o certificado para saber se é valido:

SSL Labs - SSL Test

Ao final da analise, irá exibir a tela abaixo, informando a qualidade do certificado:

osTicket

Para renovar o certificado, execute o comando abaixo:

Vale lembrar que o certificado é válido por 3 meses e precisa ser renovado, o comando abaixo vai retornar que o certificado já está atualizado.

# certbot renew

Vamos usar o crontab para agendar e renovar o certificado automático:

Incluir a linha abaixo, com o comando para renovar o certificado e salvar o log no arquivo: le-renew.log, repare que eu coloquei para rodar o comando para renovar de 3 em 3 meses.

# vim /etc/crontab
0 8 * jan,abr,jul,oct * /usr/bin/certbot renew > /var/log/le-renew.log

Referências:

https://certbot.eff.org/#centosrhel7-apachehttps://certbot.eff.org/docs/using.html#changing-a-certificate-s-domains"
https://certbot.eff.org/docs/intro.html#how-to-run-the-client https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-apache-for-centos-7
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-centos-7
https://tools.pingdom.com/#!/eAh9dT/
https://www.ssllabs.com/ssltest

Espero que ajude bastante gente, pois deu um pouquinho de trabalho para configurar de início, visto que tive que buscar bastante referências, pois a documentação do próprio certboot é confusa..

Ultimo post de 2017, desejo a todos um Feliz ano Novo, muita saúde e ótimas festas!
Até a próxima. 🙂

comments powered by Disqus

Assine nossa Newsletter! 🐧

Se una com os assinantes de nossa Newsletter, sempre que tiver postagem nova você será notificado.