Android

Apache seguro com vamos criptografar no centos 7

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). 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:

yum install mod_ssl openssl

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:

sudo yum install certbot

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:

/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: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 ssl

Esta 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 7