GNU/Linux >> Linux Esercitazione >  >> Cent OS

Proteggi Apache con Lets Encrypt su CentOS 7

Let's Encrypt è un'autorità di certificazione gratuita, automatizzata e aperta sviluppata dall'Internet Security Research Group (ISRG). I certificati emessi da Let's Encrypt sono validi per 90 giorni dalla data di emissione e oggi sono considerati affidabili da tutti i principali browser.

In questo tutorial, tratteremo i passaggi necessari per installare un certificato SSL Let's Encrypt gratuito su un server CentOS 7 che esegue Apache come server web. Useremo l'utilità certbot per ottenere e rinnovare i certificati Let's Encrypt.

Prerequisiti #

Assicurati di aver soddisfatto i seguenti prerequisiti prima di continuare con questo tutorial:

  • Disponi di un nome di dominio che punta all'IP del tuo server pubblico. Useremo example.com .
  • Apache è installato e in esecuzione sul tuo server.
  • Disponi di un host virtuale Apache per il tuo dominio.
  • Le porte 80 e 443 sono aperte nel firewall.

Installa i seguenti pacchetti necessari per un server Web crittografato SSL:

yum install mod_ssl openssl

Installa Certbot #

Certbot è uno strumento che semplifica il processo per ottenere i certificati SSL da Let's Encrypt e abilitare automaticamente HTTPS sul tuo server.

Il pacchetto certbot è disponibile per l'installazione da EPEL. Se il repository EPEL non è installato sul tuo sistema, puoi installarlo utilizzando il seguente comando:

sudo yum install epel-release

Una volta abilitato il repository EPEL, installa il pacchetto certbot digitando:

sudo yum install certbot

Genera Strong Dh (Diffie-Hellman) gruppo #

Lo scambio di chiavi Diffie–Hellman (DH) è un metodo per lo scambio sicuro di chiavi crittografiche su un canale di comunicazione non protetto. Genera un nuovo set di parametri DH a 2048 bit per rafforzare la sicurezza:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
È possibile modificare la dimensione fino a 4096 bit, ma in tal caso la generazione potrebbe richiedere più di 30 minuti a seconda dell'entropia del sistema.

Ottenere un certificato SSL Let's Encrypt #

Per ottenere un certificato SSL per il nostro dominio, utilizzeremo il plugin Webroot che funziona creando un file temporaneo per la convalida del dominio richiesto nel ${webroot-path}/.well-known/acme-challenge directory. Il server Let's Encrypt effettua richieste HTTP al file temporaneo per convalidare che il dominio richiesto venga risolto nel server in cui viene eseguito certbot.

Per semplificare, mapperemo tutte le richieste HTTP per .well-known/acme-challenge in una singola directory, /var/lib/letsencrypt .

Esegui i seguenti comandi per creare la directory e renderla scrivibile per il server Apache:

sudo mkdir -p /var/lib/letsencrypt/.well-knownsudo chgrp apache /var/lib/letsencryptsudo chmod g+s /var/lib/letsencrypt

Per evitare la duplicazione del codice, crea i seguenti due frammenti di configurazione:

/etc/httpd/conf.d/letsencrypt.conf
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>
/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 SAMEORIGIN
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

Lo snippet sopra include i cippatori consigliati, abilita OCSP Stapling, HTTP Strict Transport Security (HSTS) e applica poche intestazioni HTTP incentrate sulla sicurezza.

Ricarica la configurazione di Apache per rendere effettive le modifiche:

sudo systemctl reload httpd

Ora possiamo eseguire lo strumento Certbot con il plug-in webroot e ottenere i file del certificato SSL digitando:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Se il certificato SSL viene ottenuto con successo, certbot stamperà il seguente messaggio:

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:                    https://eff.org/donate-le

CentOS 7 viene fornito con la versione 2.4.6 di Apache, che non include il SSLOpenSSLConfCmd direttiva. Questa direttiva è disponibile solo su Apache 2.4.8 successivo e viene utilizzata per la configurazione dei parametri OpenSSL come lo scambio di chiavi Diffie–Hellman (DH).

Dovremo creare un nuovo file combinato utilizzando il certificato Let's Encrypt SSL e il file DH generato. Per fare ciò, digita:

cat /etc/letsencrypt/live/example.com/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/example.com/cert.dh.pem

Ora che tutto è impostato, modifica la configurazione dell'host virtuale del tuo dominio come segue:

/etc/httpd/conf.d/example.com.conf
<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com

  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com

  <If "%{HTTP_HOST} == 'www.example.com'">
    Redirect permanent / https://example.com/
  </If>

  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

</VirtualHost>

Con la configurazione sopra, stiamo forzando il reindirizzamento HTTPS e dalla versione www alla versione non www. Fell libero di regolare la configurazione in base alle tue esigenze.

Riavvia il servizio Apache per rendere effettive le modifiche:

sudo systemctl restart httpd

Ora puoi aprire il tuo sito web utilizzando https:// e noterai l'icona di un lucchetto verde.

Se esegui il test del tuo dominio utilizzando SSL Labs Server Test, otterrai un voto A+ come mostrato di seguito:

Certificato SSL Let's Encrypt con rinnovo automatico #

I certificati di Let's Encrypt sono validi per 90 giorni. Per rinnovare automaticamente i certificati prima che scadano, creeremo un cronjob che verrà eseguito due volte al giorno e rinnoverà automaticamente qualsiasi certificato 30 giorni prima della sua scadenza.

Esegui crontab comando per creare un nuovo cronjob che rinnoverà il certificato, creerà un nuovo file combinato che include la chiave DH e riavvierà 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 httpd"

Salva e chiudi il file.

Per testare il processo di rinnovo, puoi utilizzare il comando certbot seguito da --dry-run interruttore:

sudo certbot renew --dry-run

Se non ci sono errori, significa che il processo di rinnovo è andato a buon fine.


Cent OS
  1. Proteggi Apache con Lets Encrypt su Ubuntu 18.04

  2. Proteggi Apache con Let's Encrypt su CentOS 7 - Processo passo dopo passo?

  3. Installa Zenario con Apache, PHP e MariaDB su CentOS 7

  4. Come installare Let's Encrypt con Apache su CentOS 7

  5. Installa Apache su CentOS 8

Come installare ElkArte Forum con Apache e Lets Encrypt SSL su CentOS 8

Come installare Shopware 6 con NGINX e Lets Encrypt su CentOS 8

Come installare PrestaShop con Apache e Lets Encrypt SSL su CentOS 8

Come installare Let's Encrypt SSL con Apache su CentOS 7

Come proteggere Apache con Let's Encrypt SSL Certificate su CentOS 8

Come proteggere Apache con Let's Encrypt su CentOS 8