In un mondo online costantemente inondato di minacce alla sicurezza, la sicurezza del tuo server web dovrebbe essere al primo posto. Uno dei modi per proteggere il tuo server web è implementare il protocollo HTTPS sul tuo sito utilizzando un certificato SSL/TLS. Un certificato SSL/TLS non solo protegge il tuo sito crittografando le informazioni scambiate tra il server web e i browser degli utenti, ma aiuta anche nel posizionamento di Google.
In questa guida imparerai come proteggere il server Web Apache (http) con Let's Encrypt SSL/TLS su RHEL 8.
Prerequisiti
Ecco cosa ti serve prima di procedere:
- Un'istanza del server RHEL 8 con un utente sudo configurato.
- Un nome di dominio completo (FQDN) che punta all'indirizzo IP pubblico del tuo server. In questa guida utilizzeremo il nome di dominio linuxtechgeek.info.
Passaggio 1) Installa Apache su RHEL 8
Il primo passo è installare il server web Apache. Poiché Apache esiste già nel repository AppStream di Red Hat, puoi installarlo utilizzando il gestore di pacchetti DNF come segue.
$ sudo dnf install -y httpd
Una volta installato, avvia il server Web Apache e abilitalo all'avvio all'avvio.
$ sudo systemctl start httpd $ sudo systemctl enable httpd
Per verificare che Apache sia in esecuzione, eseguire il comando:
$ sudo systemctl status httpd
Nota:nel caso in cui il firewall sia in esecuzione, consenti le seguenti porte Apache nel firewall, esegui
$ sudo firewall-cmd --add-port=80/tcp --permanent $ sudo firewall-cmd --add-port=443/tcp –permanent $ sudo firewall-cmd --realod
Ora puoi accedere al tuo browser web e sfogliare il tuo dominio nella barra degli URL.
Passaggio 2) Installa Certbot
Certbot è un client opensource facile da usare gestito da EFF (Electronic Frontier Foundation). Recupera il certificato TLS da Lets Encrypt e lo distribuisce al server web. In questo modo, elimina il fastidio e il dolore dell'implementazione del protocollo HTTPS utilizzando il certificato TLS.
Per installare Certbot e i pacchetti associati, abilita prima EPEL (Extra Packages for Enterprise Linux).
$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
Quindi, installa certbot e il pacchetto mod_ssl come segue.
$ sudo dnf install certbot python3-certbot-apache mod_ssl
Fase 3) Crea un file host virtuale Apache
Gli host virtuali consentono di ospitare più domini su un unico server web.
Il primo passo è creare una directory all'interno della radice del documento in cui andranno tutti i file del sito Web.
$ sudo mkdir -p /var/www/linuxtechgeek.info/html
Imposta la proprietà della directory sull'utente Apache.
$ sudo chown -R apache:apache /var/www/linuxtechgeek.info/html
Assicurati di impostare i permessi della directory come mostrato.
$ sudo chmod -R 755 /var/www
Con la directory del dominio in atto con tutte le proprietà e i permessi impostati, creeremo un file host virtuale nella directory /etc/httpd/conf.d/.
$ sudo vi /etc/httpd/conf.d/linuxtechgeek.info.conf
Incolla le seguenti righe e fai attenzione a usare il tuo nome di dominio.
<virtualhost *:80> ServerName linuxtechgeek.info ServerAlias www.linuxtechgeek.info DocumentRoot /var/www/linuxtechgeek.info/html ErrorLog /var/log/httpd/linuxtechgeek.info-error.log CustomLog /var/log/httpd/linuxtechgeek.info-access.log combined </virtualhost>
Salva ed esci dal file virtualhost.
Per verificare se l'host virtuale funziona, creeremo un file HTML di esempio nella directory del sito Web.
$ sudo vi /var/www/linuxtechgeek.info/html/index.html
Incolla il seguente contenuto di esempio. Sentiti libero di modificarlo secondo le tue preferenze.
<!DOCTYPE html> <html> <body> <h1> Welcome to Linuxtechi virtualhost </h1> </body> </html>
Salva ed esci dal file HTML. Per salvare tutte le modifiche apportate, riavvia il server web Apache.
$ sudo systemctl restart httpd
Ora, esplora ancora una volta il tuo dominio e questa volta, invece della pagina di benvenuto di Apache predefinita, dovresti vedere la pagina HTML personalizzata che hai appena configurato. Questa è la prova che il file dell'host virtuale funziona.
Passaggio 4) Proteggi Apache con Let's Encrypt Certificate
L'ultimo passaggio consiste nel recuperare e distribuire il certificato Let's Encrypt. Per fare ciò, esegui semplicemente il comando:
$ sudo certbot --apache
Quando il comando viene eseguito, certbot ti guiderà attraverso una serie di prompt. Ti verrà richiesto il tuo indirizzo e-mail e ti verrà richiesto di accettare i Termini e condizioni. Ti verrà anche chiesto se desideri ricevere e-mail periodiche sulle notizie EFF e sulle campagne sulla libertà digitale.
Quando ti vengono richiesti i nomi per i quali attivare HTTPS, premi semplicemente INVIO per applicare il certificato a tutti i domini forniti.
Certbot procederà a recuperare il certificato TLS da Let's Encrypt e lo implementerà sul tuo server web. Certbot stamperà quindi il percorso in cui sono stati salvati il certificato e la chiave, nonché il percorso di distribuzione del certificato per i tuoi domini.
Per verificare che Let's encrypt sia stato distribuito correttamente, aggiorna il browser. Questa volta noterai un'icona a forma di lucchetto all'inizio della barra degli URL che indica che il sito è stato crittografato correttamente.
Puoi fare clic sull'icona del lucchetto per ulteriori dettagli
Inoltre, puoi eseguire un test SSL su SSL Labs per verificare digitalmente il tuo certificato. Se tutto è andato bene, dovresti prendere un voto A.
Passaggio 5) Crittografiamo il rinnovo del certificato
Il certificato Let's Encrypt è valido per soli 90 giorni. Alcune settimane prima della scadenza, di solito riceverai una notifica da EFF sull'imminente scadenza del certificato e sulla necessità di rinnovare il tuo certificato.
Puoi rinnovare manualmente il certificato eseguendo il comando:
$ sudo certbot renew
Per simulare il rinnovo del certificato, esegui il comando:
$ sudo certbot renew --dry-run
Questo simula semplicemente il rinnovo effettivo del certificato e non esegue alcuna azione.
Per automatizzare il rinnovo del certificato, apri il file crontab
$ crontab -e
Specifica il processo cron di seguito che verrà eseguito ogni mezzanotte.
0 0 * * * /usr/bin/certbot rinnovo> /dev/null 2>&1
Conclusione
Ci auguriamo che ora tu possa distribuire senza problemi il certificato Let's Encrypt su RHEL per proteggere il server Web Apache.
Leggi anche :Come rafforzare e proteggere il server Web NGINX in Linux