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) que fornece certificados SSL gratuitos.
Os certificados emitidos pelo Let's Encrypt são confiáveis por todos os principais navegadores e válidos por 90 dias a partir da data de emissão.
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.
Pré-requisitos
Certifique-se de que os seguintes pré-requisitos sejam atendidos antes de continuar:
- Tenha um nome de domínio apontando para o IP do servidor público. Usaremos
example.comApache está instalado e em execução no servidor com um host virtual configurado para o seu domínio. As classes 80 e 443 estão abertas no firewall.
Instale os seguintes pacotes necessários para um servidor da Web criptografado SSL:
sudo dnf install mod_ssl openssl
Quando o pacote mod_ssl é instalado, ele deve criar uma chave autoassinada e arquivos de certificado para o host local. Se os arquivos não forem criados automaticamente, você poderá criá-los usando o comando
openssl
:
sudo openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes \
-out /etc/pki/tls/certs/localhost.crt \
-keyout /etc/pki/tls/private/localhost.key
Instale o Certbot
Certbot é uma ferramenta de linha de comando gratuita que simplifica o processo de obtenção e renovação de certificados criptografados Let's Encrypt, SSL e habilitação automática de HTTPS em seu servidor.
O pacote certbot não está incluído nos repositórios padrão do CentOS 8, mas pode ser baixado do site do fornecedor.
Execute o seguinte comando
wget
como usuário root ou sudo para baixar o script certbot para o
/usr/local/bin
:
sudo wget -P /usr/local/bin
Quando o download estiver concluído, torne o arquivo executável:
sudo chmod +x /usr/local/bin/certbot-auto
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 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 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 tornar a configuração mais simples,
/var/lib/letsencrypt
todas as solicitações HTTP para
.well-known/acme-challenge
para 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 e tornar a configuração mais sustentável, crie os dois trechos de configuração a seguir:
/etc/httpd/conf.d/letsencrypt.conf
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 # Requires Apache 2.4.36 & OpenSSL 1.1.1 SSLProtocol -all +TLSv1.3 +TLSv1.2 SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1 # Older versions # 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 SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"
O snippet acima está usando os trituradores recomendados por Cipherli.st. Ele permite grampeamento OCSP, HSTS (HTTP Strict Transport Security), chave Dh e aplica 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, você pode executar o script certbot com o plug-in webroot e buscar os arquivos de certificado SSL:
sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Em caso de 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 2020-01-26. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:
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 Protocols h2 http:/1.1 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/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 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/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 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/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 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/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration
A configuração acima está forçando HTTPS e redirecionando da versão www para a não-www. Também habilita o HTTP / 2, o que tornará seus sites mais rápidos e mais robustos. Fique à vontade para ajustar a configuração de acordo com suas necessidades.
Reinicie o serviço Apache:
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 seguinte comando para criar um novo cronjob que renove o certificado e reinicie o Apache:
echo "0 0, 12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto -q renew --renew-hook \"systemctl reload httpd\"" | sudo tee -a /etc/crontab > /dev/null
Para testar o processo de renovação, use o comando certbot seguido pela opção
--dry-run
:
sudo /usr/local/bin/certbot-auto renew --dry-run
Se não houver erros, significa que o processo de renovação foi bem-sucedido.
Conclusão
Neste tutorial, falamos sobre como usar o certificado do cliente Let's Encrypt no CentOS para obter certificados SSL para seus domínios. Você também mostrou como configurar o Apache para usar os certificados e configurar um cronjob para renovação automática de certificados.
Para saber mais sobre o script Certbot, visite a documentação do Certbot.
apache centos vamos criptografar certbot sslApache seguro com vamos criptografar no centos 7
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.
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.







