Android

Apache seguro com vamos criptografar no centos 8

Certificados SSL con Let´s Encrypt en Apache Web Server

Certificados SSL con Let´s Encrypt en Apache Web Server

Índice:

Anonim

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.com Apache 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 /etc/httpd/conf.d/ssl-params.conf

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 ssl