Ricerca nel sito web

Installa Crittografiamo il certificato SSL per Nginx su RHEL 9/8


In questo articolo ti guideremo su come generare e installare un certificato SSL/TLS ottenuto gratuitamente da Let's Encrypt Certificate Authority che utilizzeremo per proteggere le transazioni HTTP del server web Nginx su RHEL e Distribuzioni basate su RHEL come Fedora, Rocky Linux e AlmaLinux.

Se stai cercando di installare Let's Encrypt per Apache su distribuzioni RHEL e basate su RHEL, segui questa guida di seguito:

Requisiti

  • Un nome di dominio registrato con record DNS A validi per puntare all'indirizzo IP pubblico del server.
  • Server web Nginx installato con SSL abilitato e host virtuali abilitati (solo per più domini o hosting di sottodomini).

La nostra configurazione dell'ambiente di test

Passaggio 1: installare il server Web Nginx nei sistemi RHEL

1. Nel primo passaggio, nel caso in cui non sia già installato il demone Nginx, esegui i comandi seguenti con privilegi di root per installare il server web Nginx dai repository Epel.


------------- On RHEL, Rocky & AlmaLinux 9 ------------- 
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

------------- On RHEL, Rocky & AlmaLinux 8 -------------
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

------------- Install Nginx Web Server -------------
yum install nginx

Nota: gli utenti Fedora non hanno bisogno di installare il repository epel.

Passaggio 2: installa Let's Encrypt (Certbot) nei sistemi RHEL

2. Il metodo più veloce per installare il client Let's Encrypt su sistemi Linux è installare i pacchetti certbot e python3-certbot-nginx dal repository epel .


dnf install certbot python3-certbot-nginx

3. Dopo aver installato il client certbot, verifica la versione installata del software Let's Encrypt eseguendo il comando seguente:


certbot --version

certbot 1.30.0

Passaggio 3: ottieni un certificato SSL Let's Encrypt gratuito per Nginx

4. Il processo per ottenere un certificato SSL/TLS gratuito per Nginx verrà eseguito manualmente utilizzando Let's Encrypt Standalone > plug-in.

Questo metodo richiede che la porta 80 sia libera durante il tempo in cui il client Let's Encrypt convalida l'identità del server e genera certificati.

Quindi, se Nginx è già in esecuzione, arresta il demone con il comando seguente ed esegui l'utility ss per confermare che la porta 80 non è più in uso nello stack di rete.


service nginx stop
systemctl stop nginx
ss -tln

5. Ora è il momento di ottenere un certificato SSL gratuito da Let's Encrypt eseguendo il comando certbot con --nginx per inizializzare il recupero e la configurazione del certificato di sicurezza Let's Encrypt per i domini Nginx.


certbot --nginx
Or
certbot --nginx -d example.com -d www.example.com

6. Infine, se tutto è andato come dovrebbe, sul tuo terminale bash verrà visualizzato un messaggio informativo di congratulazioni. Il messaggio verrà visualizzato anche quando il certificato scadrà.

Passaggio 4: installa Let's Encrypt SSL Certificate in Nginx

9. Ora che possiedi un certificato SSL/TLS gratuito, è il momento di installarlo nel server web Nginx affinché il tuo dominio possa utilizzarlo.

Tutti i nuovi certificati SSL vengono inseriti in /etc/letsencrypt/live/ in una directory che prende il nome dal tuo nome di dominio. Utilizza il comando ls per elencare i file di certificato emessi per il tuo dominio e identificarli.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/your_domain.tld

10. Per installare i file del certificato in Nginx e abilitare SSL, apri il file /etc/nginx/nginx.conf per la modifica e aggiungi le seguenti istruzioni dopo l'ultima riga di ascolto da blocco del server. Utilizzare l'illustrazione seguente come guida.

vi /etc/nginx/nginx.conf

Estratto del blocco SSL Nginx:

SSL configuration
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/your_domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.tld/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

Sostituisci la stringa del nome dominio per i certificati SSL in modo che corrisponda al tuo dominio.

11. Infine, riavvia il servizio Nginx e visita il tuo dominio tramite il protocollo HTTPS su https://tuodominio. La pagina dovrebbe caricarsi senza problemi, senza errori di certificato.

systemctl restart nginx
service nginx restart

12. Per verificare il certificato SSL/TLS e la sua rettilineità visitare il seguente link:

https://www.ssllabs.com/ssltest/analyze.html 

13. Nel caso in cui ricevi una notifica che il tuo server supporta uno scambio di chiavi DH debole e una valutazione complessiva di grado B, genera un nuovo Cifratura Diffie-Hellman nella directory /etc/nginx/ssl/ per proteggere il tuo server dall'attacco Logjam eseguendo i seguenti comandi.

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl dhparam -out dhparams.pem 4096

In questo esempio abbiamo utilizzato una chiave a 4096 bit, che in realtà richiede molto tempo per essere generata e comporta un sovraccarico aggiuntivo sul tuo server e sull'handshake SSL.

Nel caso in cui non ci sia una necessità esplicita di utilizzare una chiave così a lungo e non sei troppo paranoico, dovresti essere al sicuro con una chiave a 2048 bit.

14. Dopo che la chiave DH è stata generata, apri il file di configurazione Nginx e aggiungi le seguenti istruzioni dopo la riga ssl_ciphers per aggiungere la chiave DH e innalza il livello di sicurezza del tuo dominio al grado A+.

vi /etc/nginx/nginx.conf

Aggiungi il seguente estratto del blocco a Nginx.conf:

ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:SSL:10m;
ssl_buffer_size 8k;
add_header Strict-Transport-Security max-age=31536000;

15. Riavvia il servizio Nginx per applicare le modifiche e testare nuovamente il certificato SSL svuotando la cache dei risultati precedenti dal collegamento menzionato sopra.

systemctl restart nginx
service nginx restart

Passaggio 5: Rinnovo automatico Nginx gratuito consente di crittografare i certificati SSL

16. Let's Encrypt CA rilascia certificati SSL/TLS gratuiti validi per 90 giorni. I certificati possono essere rinnovati manualmente e applicati prima della scadenza utilizzando il plug-in webroot, senza arrestare il server Web, immettendo i comandi seguenti:


certbot --nginx -d example.com -d www.example.com
systemctl reload nginx

Quando esegui il comando precedente assicurati di sostituire example.com con il tuo dominio.

17. Per rinnovare automaticamente il certificato prima della scadenza, creare il processo cron su un file crontab esistente.


crontab -e

Aggiungi il seguente processo cron in fondo al file, che verrà eseguito ogni giorno a mezzogiorno per verificare la scadenza del certificato e rinnovarlo. L'opzione --quiet dice a certbot di non generare output.


0 12 * * * /usr/bin/certbot renew --quiet

È tutto! Ora, il server Nginx può fornire contenuti web sicuri con un certificato SSL/TLS Let's Encrypt gratuito sul tuo sito web.