La sicurezza è una delle principali preoccupazioni per i proprietari di siti Web, in particolare se gestisci un negozio di eCommerce o un sito che accetta informazioni riservate degli utenti come nomi utente e password. Il semplice protocollo HTTP non è sicuro poiché i dati vengono inviati in testo normale e gli hacker possono intercettare le comunicazioni inviate da e verso il server web.
Per superare questo rischio, si consiglia di proteggere un server Web utilizzando un certificato TLS/SSL. Questo è un certificato digitale crittografico che crittografa il tuo server web e garantisce che i dati scambiati con il server web siano crittografati.
Il certificato Let's Encrypt SSL è un certificato digitale fornito da Let's Encrypt CA (Autorità di certificazione) per proteggere un server web. È un certificato TLS/SSL gratuito valido per soli 90 giorni, dopodiché è necessario il rinnovo prima della scadenza. È utile per le startup o gli individui che non possono permettersi un certificato SSL premium per i propri blog o siti Web.
In questa guida dimostreremo come installare il certificato Let's Encrypt SSL/TLS per NGINX su Rocky Linux 8
Di cosa hai bisogno
Innanzitutto, assicurati di avere un'istanza del server Rocky Linux 8 sul cloud o in locale e già configurata con un utente sudo.
Quindi, assicurati di avere un nome di dominio completo (FQDN) che punta all'IP pubblico del tuo server. Per ottenere ciò, vai al tuo registrar di domini e, nelle impostazioni DNS, configura il record A in modo che punti il nome di dominio all'IP pubblico del server. Di seguito è riportato uno snippet del mio record A.
Per questa guida utilizziamo il nome di dominio linuxtechgeek.info che punta all'indirizzo IP del server 34.134.239.201.
Detto questo, iniziamo!
Passaggio 1) Installa Nginx Web Server
Iniziamo con l'installazione del server web Nginx su Rocky 8. Ma prima aggiorniamo il pacchetto di sistema e aggiorniamo i repository.
$ sudo dnf update
L'aggiornamento può richiedere del tempo, quindi sii paziente fino al completamento.
Una volta completato l'aggiornamento, riavviare il sistema una volta e quindi installare nginx webserver come segue:
$ sudo dnf install nginx
Per impostazione predefinita, nginx non si avvia automaticamente. Quindi, fai il possibile e avvia il servizio nginx.
$ sudo systemctl start nginx
Quindi, abilita l'avvio del server web all'avvio o al riavvio.
$ sudo systemctl enable nginx
Il server web dovrebbe ora essere in esecuzione come previsto e in ascolto sulla porta 80. Puoi confermarlo eseguendo il comando
$ sudo systemctl status nginx
Puoi anche verificarlo da un browser web. Ma prima, consenti il traffico HTTP (sia HTTP che HTTPS) sul firewall eseguendo i comandi mostrati
$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --add-service=https --permanent
Quindi ricarica il firewall per apportare le modifiche.
$ sudo firewall-cmd --reload
Quindi sfoglia l'indirizzo IP o il nome di dominio del tuo server
http://nome_dominio
Passaggio 2) Crea una radice del documento per il dominio
Abbiamo finito di installare il server web. Il passaggio successivo consiste nel creare una directory che contenga i file del dominio. Creeremo la directory del dominio nel percorso linuxtechgeek.info come mostrato usando il comando mkdir
$ sudo mkdir -p /var/www/linuxtechgeek.info/html
La radice del documento del dominio è dove troverai i file del sito Web inclusi HTML, CSS, JavaScript e immagini. A scopo dimostrativo, creeremo un semplice file index.html.
$ sudo vi /var/www/linuxtechgeek.info/html/index.html
Successivamente, incolla il seguente codice HTML di esempio e salva le modifiche.
<!DOCTYPE html> <html> <head> <title>Welcome to linuxtechgeek.info</title> </head> <body> <h1>Hey Guys! Our Nginx server block is working.</h1> </body> </html>
Quindi, usa il comando chown per impostare la proprietà della directory del dominio come segue per evitare problemi di autorizzazioni.
$ sudo chown -R nginx /var/www/linuxtechgeek.info/
Quindi, imposta le autorizzazioni in modo tale che il gruppo e gli utenti globali abbiano i diritti di lettura ed esecuzione sui file del dominio.
$ sudo chmod -R 755 /var/www/linuxtechgeek.info/
Abbiamo finito di configurare la root del documento per il dominio e di impostare la proprietà e le autorizzazioni corrette. Procediamo e configuriamo il file di blocco del server.
Passaggio 3) Crea un blocco server Nginx
Un blocco server Nginx è l'equivalente di un host virtuale apache. Il blocco del server è il punto in cui definisci le impostazioni del sito e dici al server web nginx dove individuare i file del dominio.
Il file di configurazione del blocco del server viene creato nella directory /etc/nginx/conf.d. Creeremo il nostro nella stessa directory come segue.
$ sudo vi /etc/nginx/conf.d/linuxtechgeek.info.conf
Copia e incolla le seguenti righe. Assicurati di sostituire il nome di dominio linuxtechgeek.info con il tuo dominio.
server { listen 80; server_name linuxtechgeek.info www.linuxtechgeek.info; root /var/www/linuxtechgeek.info/html; index index.php index.html index.htm; access_log /var/log/nginx/linuxtechgeek.info.access.log; error_log /var/log/nginx/linuxtechgeek.info.error.log; }
Salva le modifiche ed esci dal file di blocco del server.
Quindi conferma che tutte le configurazioni di Nginx sono a posto. Se tutto va bene, dovresti visualizzare l'output.
$ sudo nginx -t
Affinché Nginx sia a conoscenza di tutte le modifiche, inclusa la radice del documento del dominio e il file di blocco del server, riavvia il server web.
$ sudo systemctl restart nginx
Quindi conferma lo stato di esecuzione di Nginx.
$ sudo systemctl status nginx
Quindi, imposta SELinux in modalità permissiva usando il comando:
$ sudo setenforce permissive
Per confermare che è impostato in modalità permissiva, esegui il comando:
$ sudo getenforce
Esegui sotto il comando sed per impostare permanentemente la modalità selinux come permissiva.
$ sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux
Per confermare che il file di blocco del server è stato configurato correttamente, ancora una volta, sfoglia il tuo nome di dominio.
http://nome_dominio
Dovresti ottenere una conferma positiva come mostrato di seguito.
Passaggio 4) Installa Certbot
L'unico passaggio rimasto è installare Let's Encrypt e proteggere il server web Nginx. Tuttavia, per ottenere ciò, è necessario installare certbot. Scritto in Python e sviluppato dalla Electronic Frontier Foundation, Certbot è un client completo per Let's Encrypt CA. Viene eseguito sul server web e ti consente di impostare automaticamente un certificato SSL per il tuo server web con un unico comando.
Innanzitutto, installa il repository EPEL che fornisce pacchetti aggiuntivi e di alta qualità per le distribuzioni basate su RHEL.
$ sudo dnf install -y epel-release
Una volta installato, installa certbot e il modulo certbot per Nginx.
$ sudo dnf install certbot python3-certbot-nginx
Questo installa certbot, modulo certbot per host Nginx di altri pacchetti e dipendenze.
Passaggio 4) Installa il certificato Let's Encrypt SSL/TLS
Infine, esegui il client certbot per installare il certificato SSL
$ sudo certbot --nginx
Questo ti guida attraverso una serie di prompt. Innanzitutto, fornisci l'indirizzo e-mail che verrà utilizzato da EFF per inviarti aggiornamenti di rinnovo e sicurezza. Quindi accetta i Termini di servizio premendo "Y". Se lo desideri, puoi premere "Y" per consentire a EFF di inviarti aggiornamenti regolari sui loro sforzi per proteggere il Web, le notizie e le campagne. Infine, seleziona i nomi di dominio da crittografare. Nel nostro caso, abbiamo premuto il pulsante 'INVIO' per selezionare tutti i nomi di dominio.
Certbot recupererà il certificato SSL/TLS e lo distribuirà per i nomi di dominio specificati. Ciò abilita il protocollo HTTPS per il tuo dominio, in effetti crittografando il traffico scambiato con il server web.
Per confermare che HTTPS è stato abilitato, torna al tuo browser e ricaricalo. Questa volta noterai l'icona di un lucchetto sulla barra degli URL, un'indicazione che il sito è crittografato.
Fare clic sull'icona e quindi selezionare "Certificato".
Vengono visualizzati i dettagli del certificato come forniti
Inoltre, puoi testare lo stato del tuo server web su SSL Labs, un sito che esegue un'analisi approfondita di un server web su Internet. Dovresti ottenere una valutazione A come mostrato.
Fase 5) Gestione del rinnovo del certificato SSL
Il certificato Let's Encrypt è valido per 90 giorni, tuttavia Let's Encrypt consiglia di rinnovare il certificato ogni 60 giorni. Le notifiche e-mail ti verranno inviate negli ultimi 20 giorni prima della scadenza con la frequenza che sale negli ultimi 10 giorni.
Puoi rinnovare manualmente il certificato come segue.
$ sudo certbot renew
Per fortuna, puoi automatizzare il rinnovo aggiungendo un nuovo lavoro cron. Quindi, apri il file crontab.
$ crontab -e
E aggiungi la riga mostrata. Salva le modifiche ed esci.
0 0 * * * /usr/bin/certbot renew > /dev/null 2>&1
È tutto. Grazie per essere arrivato fin qui. Abbiamo dimostrato come installare il certificato Let's Encrypt SSL per Nginx su Rocky Linux 8.
Leggi anche :Come configurare NGINX ad alta disponibilità con KeepAlived in Linux