Come proteggere Nginx con Let's Encrypt su Ubuntu e Debian

Seguendo il precedente Criptiamo tutorial riguardo Apache SSL, in questo articolo parleremo di come generare e installare un certificato SSL/TLS gratuito emesso da Criptiamo CA per Nginx server web acceso Ubuntu o Debian.

Leggi anche
  1. Apache sicuro con Let's Encrypt gratuito su Ubuntu e Debian
  2. Installa Let's Encrypt SSL per proteggere Apache su RHEL e CentOS
Ambiente campione di prova
Installa Lets Encrypt per proteggere Nginx su Ubuntu e Debian
Installa Lets Encrypt per proteggere Nginx su Ubuntu e Debian

Requisiti

  1. Un dominio registrato con DNS valido UN record per puntare all'indirizzo IP del tuo server.
  2. Un server web Nginx installato con SSL e Vhost abilitati, nel caso tu abbia intenzione di farlo ospitare più domini o sottodomini.

Passaggio 1: installazione del server Web Nginx

1. Nel primo passaggio installa il server web Nginx, se non è già installato, emettendo il comando seguente:

$ sudo apt-get install nginx. 
Installa Nginx Web Server su Ubuntu 14.04 e Debian 8
Installa Nginx Web Server su Ubuntu 14.04 e Debian 8

Passaggio 2: genera un certificato SSL Let's Encrypt per Nginx

2. Prima di generare un certificato SSL/TLS gratuito, installa Criptiamo software in /usr/local/ gerarchia del filesystem con l'aiuto di idiota client emettendo i seguenti comandi:

$ sudo apt-get -y install git. $ cd /usr/local/ $ sudo git clone https://github.com/letsencrypt/letsencrypt.

3. Sebbene la procedura per ottenere un certificato per Nginx è automatizzato, puoi comunque creare e installare manualmente un certificato SSL gratuito per Nginx utilizzando il plug-in Let's Encrypt Standalone.

Questo metodo richiede quella porta 80 non deve essere utilizzato sul sistema per un breve periodo di tempo mentre il client Let's Encrypt convalida l'identità del server prima di generare il certificato.

Se stai già eseguendo Nginx, interrompi il servizio emettendo il seguente comando.

$ sudo service nginx stop. O. $ sudo systemctl stop nginx. 

Nel caso tu stia eseguendo un altro servizio che si lega alla porta 80 interrompi anche quel servizio.

4. Conferma quella porta 80 è gratuito eseguendo il comando netstat:

$ sudo netstat -tlpn | grep 80. 
Controlla le porte di ascolto correnti in Linux
Controlla le porte di ascolto correnti in Linux

5. Ora è il momento di correre crittografa per ottenere un Certificato SSL. Vai a Criptiamo directory di installazione trovata in /usr/local/letsencrypt percorso di sistema ed eseguire il letencrypt-auto comando fornendo il certonly --indipendente, autonomo opzione e -D flag per ogni dominio o sottodominio per il quale desideri generare un certificato.

$ cd /usr/local/letsencrypt. $ sudo ./letsencrypt-auto certonly --standalone -d tuo_dominio.tld 
Ottieni Let's Encrypt certificato SSL
Ottieni Let's Encrypt certificato SSL

6. Inserisci l'indirizzo e-mail che verrà utilizzato da Let's Encrypt per il recupero della chiave persa o per avvisi urgenti.

Inserisci l'indirizzo email
Inserisci l'indirizzo email

7. Accetta i termini della licenza premendo il tasto Invio.

Accetta l'accordo Letencrypt
Accetta l'accordo Letencrypt

8. Infine, se tutto è andato a buon fine, sulla console del terminale dovrebbe apparire un messaggio simile allo screenshot qui sotto.

Fine dell'installazione di Letencrypt
Fine dell'installazione di Letencrypt

Passaggio 3: installa Let's Encrypt certificato SSL in Nginx

9. Ora che il tuo certificato SSL è stato generato è il momento di configurare il server web Nginx per usarlo. I nuovi certificati SSL vengono inseriti in /etc/letsencrypt/live/ in una directory che prende il nome dal tuo nome di dominio. Correre ls comando per elencare i file di certificato emessi per il tuo dominio.

$ sudo ls /etc/letsencrypt/live/ $ sudo ls -al /etc/letsencrypt/live/caeszar.tk.
Letencrypt certificati SSL
Letencrypt certificati SSL

10. Avanti, apri /etc/nginx/sites-available/default file con un editor di testo e aggiungere il blocco seguente dopo la prima riga commentata che specifica l'inizio del blocco SSL. Usa lo screenshot qui sotto come guida.

$ sudo nano /etc/nginx/sites-enabled/default. 

Estratto del blocco Nginx:

# Configurazione SSL # ascolta 443 ssl default_server; ssl_certificate /etc/letsencrypt/live/caeszar.tk/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/caeszar.tk/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers attivo; ssl_ciphers 'EECDH+AESGCM: EDH+AESGCM: AES256+EECDH: AES256+EDH'; ssl_dhparam /etc/nginx/ssl/dhparams.pem; 
Configura Nginx per utilizzare Let's Encrypt SSL
Configura Nginx per utilizzare Let's Encrypt SSL

Sostituisci di conseguenza i valori del nome di dominio per i certificati SSL.

11. Nel passaggio successivo genera un forte Diffie Hellman cifrario in /etc/nginx/ssl/ directory per proteggere il tuo server da Logjam attaccare eseguendo i seguenti comandi.

$ sudo mkdir /etc/nginx/ssl. $ cd /etc/nginx/ssl. $ sudo openssl dhparam -out dhparams.pem 2048. 
Genera Diffie Hellman Cipher per Nginx
Genera Diffie Hellman Cipher per Nginx

12. Infine, riavvia il demone Nginx per riflettere le modifiche.

$ sudo systemctl riavvia nginx. 

e testa il tuo certificato SSL visitando l'URL sottostante.

https://www.ssllabs.com/ssltest/analyze.html. 
Controlla Nginx consente di crittografare il certificato SSL
Controlla Nginx consente di crittografare il certificato SSL

Passaggio 4: rinnovo automatico Criptiamo i certificati Nginx

13. Certificati rilasciati da Criptiamo CA sono validi per 90 giorni. Per rinnovare automaticamente i file prima della data di scadenza creare ssl-renew.sh script bash in /usr/local/bin/ directory con il seguente contenuto.

$ sudo nano /usr/local/bin/ssl-renew.sh. 

Aggiungi il seguente contenuto a ssl-renew.sh file.

#!/bin/bash cd /usr/local/letsencrypt. sudo ./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/var/www/html/ -d tuo_dominio.tld. sudo systemctl ricarica nginx. uscita 0. 
Rinnovo automatico Nginx consente di crittografare il certificato SSL
Rinnovo automatico Nginx consente di crittografare il certificato SSL

Sostituisci il --webroot-percorso variabile in modo che corrisponda alla radice del documento Nginx. Assicurati che lo script sia eseguibile emettendo il seguente comando.

$ sudo chmod +x /usr/local/bin/ssl-renew.sh. 

14. Infine aggiungi un cron job per eseguire lo script ogni due mesi a mezzanotte per assicurarti che il tuo certificato venga aggiornato in circa 30 giorni prima della scadenza.

$ sudo crontab -e. 

Aggiungi la seguente riga in fondo al file.

0 1 1 */2 * /usr/local/bin/ssl-renew.sh >> /var/log/tuo_dominio.tld-renew.log 2>&1. 
L'aggiornamento consente di crittografare i certificati SSL
L'aggiornamento consente di crittografare i certificati SSL

Questo è tutto! Il tuo server Nginx ora sta servendo contenuto SSL utilizzando un'applicazione gratuita Criptiamo SSL certificato.

Teachs.ru