GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare Nginx con Lets crittografa e ottieni A+ da SSLLabs Test

In questo tutorial, ti mostrerò passo dopo passo come installare e configurare il server web Nginx con il certificato Letsencrypt. Questa guida ti parlerà dell'installazione del server web Nginx, dell'installazione dello strumento Let's Encrypt, della generazione del certificato SSL per la crittografia, della configurazione dell'host virtuale nginx con SSL e della creazione di una configurazione SSL aggiuntiva per ottenere A+ dai laboratori SSL di test SSL.

Prerequisiti

  • Server Linux - Ubuntu 18.04 o CentOS 7.5
  • Privilegi di root

Cosa faremo?

  1. Installa il server Web Nginx
  2. Configura Firewall UFW/Firewalld
  3. Installa crittografa e genera certificato SSL
  4. Configura SSL sicuro
  5. Configura l'host virtuale Nginx con SSL
  6. Test

Passaggio 1:installazione del server Web Nginx

In questo tutorial, ti guideremo a installare e configurare il server web Nginx con Letsencrypt su entrambi i server Linux:Ubuntu 18.04 e CentOS 7.5.

Su Ubuntu 18.04.

Aggiorna il repository e quindi installa nginx usando il comando apt di seguito.

sudo apt update
sudo apt install nginx -y

Su CentOS 7.5.

Installa il repository EPEL sul sistema CentOS e installa Nginx usando il comando yum.

sudo yum install epel-release -y
sudo yum install nginx -y

Al termine dell'installazione, avvia il servizio Nginx e abilitalo per l'avvio ogni volta all'avvio del sistema.

systemctl start nginx
systemctl enable nginx

Il server Web Nginx è ora installato ed è in esecuzione sulla porta HTTP predefinita 80. Verificalo utilizzando il comando netstat di seguito.

netstat -plntu

Passaggio 2 - Configura Firewall UFW - Firewalld

Si consiglia di attivare il firewall sul server e di aprire la porta specifica secondo necessità. In questo passaggio, mostreremo come aprire le porte SSH, HTTP e HTTPS sui server Linux Ubuntu 18.04 utilizzando il firewall UFW e Firewalld sul sistema CentOS 7.5.

Su Ubuntu 18.04 - UFW Firewall

Prima di abilitare UFW Firewall sul sistema Ubuntu, assicurati che la porta SSH sia abilitata nell'elenco di configurazione del firewall.

Aggiungi la porta del servizio SSH alla configurazione del firewall utilizzando il comando ufw e quindi abilita il servizio firewall UFW.

ufw allow ssh
ufw enable

Ora aggiungi i servizi HTTP e HTTPS.

ufw allow http
ufw allow https

Le porte del servizio SSH, HTTP e HTTPS sono state aggiunte all'elenco dei servizi UFW Firewall, verifica che stia utilizzando il comando seguente.

ufw status

Su CentOS 7.5 - Firewalld

Prima di aggiungere porta e servizi a Firewelld, assicurati che il servizio firewalld sia attivo e funzionante.

Avvia il servizio firewalld e abilitalo all'avvio ogni volta all'avvio del sistema.

systemctl start firewalld
systemctl enable firewalld

Nota:

  • Il servizio SSH sarà abilitato per impostazione predefinita nell'elenco dei servizi Firewald.

Ora aggiungi i servizi HTTP e HTTPS usando il comando firewall-cmd di seguito.

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent

Ricarica la configurazione del firewalld e controlla l'elenco dei servizi.

firewall-cmd --reload
firewall-cmd --list-services

E otterrai i servizi SSH, HTTP e HTTPS nell'elenco.

Passaggio 3:installa Letsencrypt e genera certificati

In questo passaggio, installeremo lo strumento letencrypt e genereremo i certificati SSL avanzati Letsencrypt utilizzando il comando cerbot.

Su Ubuntu 18.04

Installa i pacchetti letencrypt usando il comando apt di seguito.

sudo apt install letsencrypt -y

Su CentOS 7.5

Ora installa i pacchetti Letencrypt su CentOS 7 usando il comando yum di seguito.

sudo yum install certbot -y

Al termine dell'installazione, creeremo una nuova configurazione che verrà utilizzata per generare i file di certificato SSL.

Su Ubuntu 18.04

Vai alla directory di configurazione '/etc/nginx' e crea un nuovo file di configurazione 'cerbot.conf' nella directory 'snippets'.

cd /etc/nginx/
vim snippets/certbot.conf

Incolla lì la seguente configurazione.

    location /.well-known {
        alias /var/www/html/.well-known;
    }

Salva ed esci.

Ora modifica il file host virtuale Nginx predefinito.

vim sites-available/default

Aggiungi la seguente configurazione sotto i blocchi 'server {..}'.

    include snippets/certbot.conf;

Salva ed esci.

Su CentOS 7.5

Vai alla directory di configurazione '/etc/nginx' e crea un nuovo file di configurazione 'certbot.conf' nella directory 'default.d'.

cd /etc/nginx/
vim default.d/certbot.conf

Incolla la configurazione di seguito.

    location /.well-known {
        alias /usr/share/nginx/html/.well-known;
    }

Salva ed esci.

Ora prova la configurazione di nginx e assicurati che non ci siano errori, quindi riavvia il servizio nginx.

nginx -t
systemctl restart nginx

Quindi, genera i certificati SSL Letencrypt utilizzando il comando certbot.

Su Ubuntu 18.04

certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email [email protected] -w /var/www/html -d hakase-labs.io

Su CentOS 7.5

certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email [email protected] -w /usr/share/nginx/html -d hakase-labs.io

Nota:

  • Specificheremo la dimensione della chiave RSA per il nostro dominio su '4096' e definiremo il metodo di autenticazione sulla directory principale Web predefinita '/var/www/html' sul sistema Ubuntu e '/usr/share/ nginx/html' per il sistema CentOS 7.

Al termine, otterrai tutti i file del certificato SSL per il nome di dominio nella directory '/etc/letsencrypt/live'.

Per ottenere una sicurezza aggiuntiva, genereremo la chiave DHPARAM '4096' utilizzando il comando OpenSSL come mostrato di seguito.

openssl dhparam -out /etc/nginx/dhparam.pem 4096

La chiave DHPARAM è stata generata nella directory '/etc/nginx'.

Fase 4 - Configurazione SSL

In questo passaggio definiremo la configurazione SSL per il server web Nginx. Creeremo una nuova configurazione 'ssl.conf' che contiene la sicurezza della configurazione SSL ottimizzata incentrata sul server web Nginx.

Su Ubuntu 18.04

Vai alla directory di configurazione '/etc/nginx/' e crea una nuova configurazione SSL 'ssl.conf' nella directory 'snippets'.

cd /etc/nginx/
vim snippets/ssl.conf

Su CentOS 7.5

Vai alla directory di configurazione '/etc/nginx/' e crea una nuova configurazione SSL 'ssl/conf' nella directory 'default.d'.

cd /etc/nginx/
vim default.d/ssl.conf

Incolla lì la seguente configurazione SSL.

# Specify the TLS versions
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

# Ciphersuites recommendation from the chiper.li
# Use this chipersuites to get 100 points of the SSLabs test
# Some device will not support
#ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384";

# Mozilla Ciphersuits Recommendation
# Use this for all devices supports
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

# Use the DHPARAM key and ECDH curve >= 256bit
ssl_ecdh_curve secp384r1;
ssl_dhparam /etc/nginx/dhparam.pem;

server_tokens off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

# Enable HTTP Strict-Transport-Security
# If you have a subdomain of your site,
# be carefull to use the 'includeSubdomains' options
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

# Enable OSCP Stapling for Nginx web server
# If you're using the SSL from Letsencrypt,
# use the 'chain.pem' certificate
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/hakase-labs.io/chain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

# XSS Protection for Nginx web server
add_header X-Frame-Options DENY;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
add_header X-Robots-Tag none;

Salva ed esci.

Nota:

  • Specifica le versioni TLS per il sito, accetta solo TLSv1 TLSv1.1 TLSv1.2.
  • Specificare la suite di crittografia SSL e si consiglia di utilizzare la suite di crittografia SSL del suggerimento Mozilla per ottenere la compatibilità di tutti i dispositivi.
  • Abilita HSTS, pinzatura OSCP e aggiunta della protezione XSS.

Passaggio 5:configurazione dell'host virtuale Nginx con SSL

In questo passaggio creeremo un file host virtuale per il nome di dominio. Creeremo un nuovo host virtuale, un dominio chiamato hakase-labs.io, e la sua directory principale web sarà situata nella directory '/var/www/site01'.

Crea la nuova directory '/var/www/site01' e crea il file 'index.html' all'interno.

mkdir -p /var/www/site01
echo '<h1><center>Nginx - Letsencrypt - A+</center></h1>' > /var/www/site01/index.html

Ora vai alla directory di configurazione '/etc/nginx' e crea un nuovo file host virtuale chiamato 'hakase-labs.io' per Ubuntu e 'hakase-labs.conf' per il sistema CentOS 7.

Su Ubuntu 18.04

cd /etc/nginx/
vim sites-available/hakase-labs.io

Su CentOS 7.5

cd /etc/nginx/
vim conf.d/hakase-labs.conf

Incolla lì la seguente configurazione di host virtuale Nginx di esempio.

server {
    listen 80;
    listen [::]:80;
    server_name hakase-labs.io;

    return 301 https://$host$request_uri;
}

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        root   /var/www/site01;
        index index.html index.php index.htm;

        server_name  hakase-labs.io;
        error_log /var/log/nginx/hakase-error.log warn;

        ssl_certificate /etc/letsencrypt/live/hakase-labs.io/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/hakase-labs.io/privkey.pem;

        #SSL Configuration
        include snippets/ssl.conf;

        location ~ /.well-known {
                allow all;
        }


        location / {
            try_files $uri $uri/ =404;
        }


        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }

}

Salva ed esci.

Nota:

  • Cambia 'include snippets/ssl.conf;' linea. Se stai usando Ubuntu, lascialo predefinito. E se stai usando CentOS, cambia la directory in 'default.d/ssl.conf'

Solo su sistema Ubuntu

Abilita il nuovo file dell'host virtuale e verifica la configurazione e assicurati che non ci siano errori.

ln -s /etc/nginx/sites-available/hakase-labs.io /etc/nginx/sites-enabled/
nginx -t

Ora riavvia il servizio nginx.

systemctl restart nginx

È stato creato il nuovo host virtuale con HTTPS abilitato ed è stata creata una configurazione SSL aggiuntiva.

Verifica utilizzando il comando netstat e otterrai la porta HTTPS 443 nell'elenco.

netstat -plntu

Fase 6 - Test

Apri il tuo browser web e digita il nome del tuo dominio, il mio è 'http://hakase-labs.io'.

E verrai reindirizzato alla connessione HTTPS.

Ora vai al sito di test SSL 'https://www.ssllabs.com/ssltest/' e digita il tuo nome di dominio, quindi attendi di ricevere i risultati.

Di seguito è riportato il risultato dell'utilizzo della "Raccomandamento Mozilla Ciphersuite".

E di seguito è riportato il mio risultato dell'utilizzo della "Consiglio Cipher.li Ciphersuite".

Vedrai che tutti i risultati hanno risultati "A+" e differiscono solo per la "Forza di cifratura" nei consigli di Mozilla e la raccomandazione Cipherli.st.

Per controllare la pinzatura OSCP e l'HSTS sul server, scorri la pagina dei risultati del test e otterrai il risultato come mostrato di seguito.

Se desideri controllare la pinzatura OSCP dalla riga di comando, verifica utilizzando il comando seguente.

echo QUIT | openssl s_client -connect hakase-labs.io:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'

Per il test HSTS, controllalo usando il comando curl di seguito.

curl -s -D- https://hakase-labs.io | grep -i Strict

L'installazione e la configurazione del server web Nginx con SSL Letsencrypt e l'ottenimento dell'A+ dal test SSLabs sono state completate con successo.

Riferimenti

  • https://community.letsencrypt.org/
  • https://mozilla.github.io/
  • https://cipherli.st/

Linux
  1. Come installare Nextcloud con Nginx e Lets Encrypt SSL su Ubuntu 20.04 LTS

  2. Come installare Magento 2 con Nginx e Lets Encrypt SSL su Ubuntu 20.04 LTS

  3. Come installare Shopware con NGINX e Lets crittografare su Ubuntu 18.04 LTS

  4. Come installare Shopware con NGINX e Lets Encrypt su CentOS 7

  5. Come installare Shopware con NGINX e Lets Encrypt su Fedora 30

Come installare Drupal 9 con Nginx e Lets Encrypt SSL su Debian 10

Come installare Shopware 6 con NGINX e Lets Encrypt su CentOS 8

Come installare Moodle con Nginx e Lets Encrypt SSL su Ubuntu 20.04

Come installare Shopware con NGINX e Lets crittografare su Debian 9

Come installare MyBB Forum con Nginx e Lets Encrypt su Debian 10

Come installare Nginx con Let's Encrypt su RHEL 8