Certificados SSL con Let´s Encrypt en Apache Web Server
Índice:
- Pré-requisitos
- Instale o Certbot
- Gerar grupo Dh forte (Diffie-Hellman)
- Obtendo um certificado SSL Let's Encrypt
- Renovação automática Vamos criptografar o certificado SSL
- Conclusão
Let's Encrypt é uma autoridade de certificação gratuita, automatizada e aberta, desenvolvida pelo Internet Security Research Group (ISRG). Os certificados emitidos pelo Let's Encrypt são válidos por 90 dias a partir da data de emissão e são confiáveis por todos os principais navegadores hoje.
Neste tutorial, abordaremos as etapas necessárias para instalar um certificado SSL Let's Encrypt criptografado gratuitamente em um servidor CentOS 7 executando o Apache como um servidor web. Usaremos o utilitário certbot para obter e renovar os certificados Let's Encrypt.
Pré-requisitos
Verifique se você atendeu aos seguintes pré-requisitos antes de continuar com este tutorial:
- Tenha um nome de domínio apontando para o IP do servidor público. Usaremos
example.com.
Instale os seguintes pacotes necessários para um servidor da Web criptografado SSL:
Instale o Certbot
O Certbot é uma ferramenta que simplifica o processo de obtenção de certificados SSL do Let's Encrypt e de habilitação automática de HTTPS em seu servidor.
O pacote certbot está disponível para instalação na EPEL. Se o repositório EPEL não estiver instalado no seu sistema, você poderá instalá-lo usando o seguinte comando:
sudo yum install epel-release
Depois que o repositório EPEL estiver ativado, instale o pacote certbot digitando:
Gerar grupo Dh forte (Diffie-Hellman)
A troca de chaves Diffie – Hellman (DH) é um método de troca segura de chaves criptográficas por um canal de comunicação não seguro. Gere um novo conjunto de parâmetros DH de 2048 bits para fortalecer a segurança:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Você pode alterar o tamanho até 4096 bits, mas, nesse caso, a geração pode demorar mais de 30 minutos, dependendo da entropia do sistema.
Obtendo um certificado SSL Let's Encrypt
Para obter um certificado SSL para o nosso domínio, usaremos o plug-in Webroot que funciona criando um arquivo temporário para validar o domínio solicitado no diretório
${webroot-path}/.well-known/acme-challenge
. O servidor Let's Encrypt faz solicitações HTTP para o arquivo temporário para validar que o domínio solicitado seja resolvido no servidor em que o certbot é executado.
Para simplificar,
/var/lib/letsencrypt
todas as solicitações HTTP para
.well-known/acme-challenge
em um único diretório,
/var/lib/letsencrypt
.
Execute os seguintes comandos para criar o diretório e torná-lo gravável para o servidor Apache:
sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp apache /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
Para evitar a duplicação de código, crie os dois trechos de configuração a seguir:
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder On Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff # Requires Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11 SSLSessionTickets Off
O snippet acima está usando os chippers recomendados pelo Cipherli.st, habilita o grampeamento OCSP, HSTS (HTTP Strict Transport Security) e impõe poucos cabeçalhos HTTP com foco em segurança.
Recarregue a configuração do Apache para que as alterações entrem em vigor:
sudo systemctl reload
Agora, podemos executar a ferramenta Certbot com o plug-in webroot e obter os arquivos de certificado SSL digitando:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Se o certificado SSL for obtido com sucesso, o certbot imprimirá a seguinte mensagem:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2018-12-07. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:
O CentOS 7 é enviado com o Apache versão 2.4.6, que não inclui a diretiva
SSLOpenSSLConfCmd
. Esta diretiva está disponível apenas no Apache 2.4.8 posterior e é usada para configuração de parâmetros OpenSSL, como troca de chaves Diffie – Hellman (DH).
Teremos que criar um novo arquivo combinado usando o certificado SSL Let's Encrypt e o arquivo DH gerado. Para fazer isso, digite:
cat /etc/letsencrypt/live/example.com/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/example.com/cert.dh.pem
Agora que tudo está configurado, edite a configuração do host virtual do seu domínio da seguinte maneira:
/etc/httpd/conf.d/example.com.conf
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration
Com a configuração acima, estamos forçando o HTTPS e redirecionando da versão www para a versão não www. Fique à vontade para ajustar a configuração de acordo com suas necessidades.
Reinicie o serviço Apache para que as alterações entrem em vigor:
sudo systemctl restart
Agora você pode abrir seu site usando
https://
e verá um ícone de cadeado verde.

Renovação automática Vamos criptografar o certificado SSL
Os certificados do Let's Encrypt são válidos por 90 dias. Para renovar automaticamente os certificados antes que eles expirem, criaremos um cronjob que será executado duas vezes por dia e renovará automaticamente qualquer certificado 30 dias antes de sua expiração.
Execute o comando
crontab
para criar um novo cronjob que renove o certificado, crie um novo arquivo combinado, incluindo a chave DH e reinicie o apache:
sudo crontab -e
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload
Salve e feche o arquivo.
Para testar o processo de renovação, você pode usar o comando certbot seguido pela opção
--dry-run
:
sudo certbot renew --dry-run
Se não houver erros, significa que o processo de renovação foi bem-sucedido.
Conclusão
Neste tutorial, você usou o certbot do cliente Let's Encrypt para baixar certificados SSL para o seu domínio. Você também criou snippets do Apache para evitar duplicação de código e configurou o Apache para usar os certificados. No final do tutorial, você configurou um cronjob para renovação automática de certificado.
apache centos vamos criptografar certbot sslEsta postagem faz parte da pilha LAMP de instalação no CentOS 7 series.
Outras postagens nesta série:
• Como instalar o Apache no CentOS 7 • Instalar o MySQL no CentOS 7 • Como configurar os hosts virtuais do Apache no CentOS 7 • Apache seguro com Let's Encrypt no CentOS 7Apache seguro com vamos criptografar no centos 8
Este tutorial explica como instalar um certificado SSL Let's Encrypt criptografado no CentOS 8 executando o Apache como um servidor web. Usaremos a ferramenta certbot para obter e renovar os certificados.
Apache seguro com vamos criptografar no debian 9
Este tutorial irá guiá-lo através do processo de obtenção gratuita de Let's Encrypt usando a ferramenta certbot no Debian 9. Também mostraremos como configurar o Apache para usar o novo certificado SSL e ativar o HTTP / 2.
Apache seguro com vamos criptografar no ubuntu 18.04
Neste tutorial, forneceremos instruções passo a passo sobre como proteger seu Apache com o Let's Encrypt usando a ferramenta certbot no Ubuntu 18.04.







