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

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

I certificati SSL vengono utilizzati per fornire ulteriore sicurezza agli utenti che accedono all'applicazione. Crittograferà il traffico tra server e client. Let's Encrypt è un'autorità di certificazione (CA). Fornisce certificati TLS/SSL gratuiti per abilitare HTTPS crittografato sui server Web. È un'autorità di certificazione automatizzata, gratuita e aperta.

Qui a LinuxAPT, come parte dei nostri servizi di gestione del server, aiutiamo regolarmente i nostri clienti a eseguire query Let's Encrypt correlate.

In questo contesto, esamineremo come proteggere Apache con Let's Encrypt su CentOS 7 installando il certificato SSL Let's Encrypt gratuito.


Come installare Let's Encrypt su CentOS 7?

I certificati Let's Encrypt SSL sono validi per 90 giorni dalla data di emissione. Di norma, i certificati SSL Let's Encrypt sono considerati affidabili da tutti i principali browser oggi.

Prima di avviare questa procedura di installazione, assicurarsi che siano soddisfatti i seguenti Prerequisiti:

  • Un sistema in esecuzione CentOS 7 con un utente non root con privilegi sudo.
  • Apache dovrebbe essere installato e configurato, come menzionato in questo tutorial.
  • Disponi di un host virtuale apache per il tuo dominio, come menzionato in questo tutorial.
  • Il tuo nome di dominio dovrebbe puntare all'indirizzo IP del tuo server.


1. Installa il client Certbot

Inizia installando il pacchetto client Certbot sul tuo server per ottenere un certificato SSL Let's Encrypt. Certbot è uno strumento utilizzato per ottenere certificati SSL da Let's Encrypt e abilitare automaticamente HTTPS sul tuo server.

Il pacchetto certbot è fornito da EPEL. Quindi dobbiamo abilitare il repository EPEL digitando :

$ sudo yum install epel-release

Ora installa il client certbot eseguendo il seguente comando:

$ sudo yum install httpd mod_ssl python-certbot-apache

Controlla l'installazione di certbot per tipo:

$ certbot --version

Se l'installazione ha esito positivo, ti mostrerà la versione di certbot.


2. Imposta Firewall

Se non stai eseguendo un firewall, puoi andare avanti.

Per installare SSL sul tuo server web dovresti assicurarti che le porte 80 e 443 siano aperte nel tuo firewall. Puoi aprire le porte all'interno di firewalld usando i seguenti comandi:

$ sudo firewall-cmd --add-service=http
$ sudo firewall-cmd --add-service=https
$ sudo firewall-cmd --runtime-to-permanent

Se sul tuo server iptables è in esecuzione, dovresti eseguire i seguenti comandi per abilitare il traffico sulla porta 80 e sulla porta 443:

$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT


3. Configura Let's Encrypt SSL su Apache

Ora è tutto pronto, quindi chiederemo di ottenere un certificato SSL da Let's Encrypt. Richiedere l'utilizzo di certbot è un processo molto semplice. Let's Encrypt convaliderà la proprietà del dominio e, in caso di esito positivo, emetterà un SSL per un dominio richiesto. Esistono diversi modi per ottenere un certificato Let's Encrypt tramite i plug-in. Esegui il comando seguente per richiedere SSL:

$ sudo certbot --apache -d example.com -d www.example.com

Nel comando precedente, richiederà il certificato SSL per entrambi i domini example.com e www.example.com.

Se stai eseguendo certbot per la prima volta, ti verrà chiesto di inserire un indirizzo e-mail, che può essere utilizzato per inviare avvisi e-mail relativi al rinnovo e alla scadenza SSL. Chiederà inoltre di accettare i termini del servizio.

Dopo averlo fatto, certbot comunicherà con il server Let's Encrypt e quindi eseguirà una sfida per verificare che tu sia il proprietario del dominio per il quale stai richiedendo un certificato.

Se la convalida ha esito positivo, ti verrà chiesto come desideri configurare le impostazioni HTTPS:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
 1: No redirect - Make no further changes to the webserver configuration.
 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
 new sites, or if you're confident your site works on HTTPS. You can undo this
 change by editing your web server's configuration.
 Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Seleziona la tua scelta e vai al passaggio successivo. Ti consigliamo di scegliere l'opzione Reindirizzamento se non desideri modificare manualmente il file di configurazione.

Alla fine, ti mostrerà il messaggio di successo.

Infine, il tuo dominio è protetto con il certificato Let's Encrypt SSL. Puoi verificare visitando il tuo sito con protocollo HTTPS.


Altre impostazioni SSL sicure per Apache

La configurazione SSL predefinita di CentOS con la versione di Apache è obsoleta, quindi è meno sicura e crea problemi di sicurezza. Quindi dobbiamo modificare alcune impostazioni per renderlo più sicuro.

Per configurare opzioni più sicure relative a SSL, apri il file ssl.conf:

$ sudo vi /etc/httpd/conf.d/ssl.conf

Innanzitutto, dovresti trovare le righe SSLProtocol e SSLCipherSuit all'interno del file e commentarle oppure puoi eliminare queste due righe:

# SSLProtocol all -SSLv2
. . .
# SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
Now append the following lines after VirtualHost block in /etc/httpd/conf.d/ssl.conf file.
. . .
. . .
# Begin copied text
# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"
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

Quindi, salva e chiudi il file. È necessario riavviare il servizio Apache per rendere effettive le modifiche.

Esegui sotto il comando:

$ sudo systemctl restart httpd

Come eseguire il rinnovo automatico del certificato SSL Let's Encrypt?

I certificati Let's Encrypt SSL sono validi per 90 giorni, quindi è necessario rinnovarli prima che scadano. 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.

Modifichiamo crontab per creare un nuovo lavoro con il comando seguente:

$ sudo crontab -e

Aggiungi le seguenti righe alla fine del file in modo che venga eseguito due volte al giorno:

0 */12 * * * /usr/bin/certbot renew >> /var/log/le-renew.log

Salva e chiudi il file. Per avere effetto, Apache verrà riavviato automaticamente se vengono rinnovati dei certificati.

Puoi testare il processo di rinnovo, puoi usare il comando certbot seguito dall'opzione –dry-run:

$ sudo certbot renew --dry-run

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


[Hai bisogno di assistenza urgente per correggere gli errori di configurazione di Apache? Possiamo aiutarti. ]


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

  2. Proteggi Nginx con Lets Encrypt su CentOS 7

  3. Installa phpMyAdmin con Nginx su CentOS 7 - Processo passo dopo passo?

  4. Installa phpMyAdmin con Apache su CentOS 7 - Processo passo dopo passo?

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

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

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

Proteggi Nginx con Let's Encrypt SSL Certificate su Ubuntu 18.04

Come proteggere Nginx con Let's Encrypt certificato SSL

Come proteggere Apache con Let's Encrypt su CentOS 8

Come proteggere Nginx con Let's Encrypt su CentOS 8