Setup Nginx SSL in Linux

Setup Nginx SSL in Linux

SSL (sta per Secure Socket Layer) è un protocollo Web che rende sicuro il traffico tra server e client critticandolo. Server e client trasmettono in modo sicuro il traffico senza il rischio di comunicazione interpretata da terzi. Aiuta anche il cliente a verificare l'identità del sito Web con cui stanno comunicando.

In questo post, descriveremo come configurare SSL per Nginx. Dimostreremo la procedura utilizzando il certificato autofirmato. Un certificato autofirmato crittografa solo la connessione ma non convalida l'identità del server. Pertanto, dovrebbe essere utilizzato solo per gli ambienti di test o per i servizi LAN interni. Per l'ambiente di produzione, è meglio utilizzare i certificati firmati da CA (Autorità del certificato).

Prerequisiti

Per questo post, dovresti avere i seguenti prerequisiti:

  • Nginx già installato sulla macchina
  • Blocco server configurato per il tuo dominio
  • Utente con privilegi sudo

La procedura spiegata qui è stata eseguita su Debian 10 (Buster) macchina.

Passaggio 1: generazione di un certificato autofirmato

Il nostro primo passo sarà generare un certificato autofirmato. Emettere il comando seguente nel terminale per generare CSR (richiesta di firma del certificato) e una chiave:

$ sudo openssl req -x509 -nodes -days 365 -newkey RSA: 2048 -Keyout/etc/ssl/private/self -fird -nginx.Chiave -out/etc/ssl/cert/self -fird -nginx.Crt

Ti verrà richiesto di fornire alcune informazioni come nome del tuo paese, stato, località, nome comune (nome di dominio o indirizzo IP) e indirizzo e -mail.

Nel comando sopra, OpenSSL creerà i seguenti due file:

  • CSR: egoista-nginx.Crt Nell'In /etc/ssl/cert/directory
  • Chiave: egoista-nginx.chiave nel /etc/ssl/directory privato

Ora crea il dhparam.File PEM Usando il comando seguente:

$ sudo openssl dhparam -out/etc/ssl/cert/dhparam.PEM 2048

Passaggio 2: configurazione di nginx per utilizzare SSL

Nel passaggio precedente, abbiamo creato il CSR e la chiave. Ora in questo passaggio, configureremo NGINX per utilizzare SSL. Per questo, creeremo uno snippet di configurazione e aggiungeremo informazioni sui nostri file di certificato SSL e sulle posizioni chiave.

Emettere il comando seguente nel terminale per creare un nuovo snippet di configurazione autofirmato.Conf File nel /etc/nginx/snippet.

$ sudo nano/etc/nginx/snippet/autofirmati.conf

Nel file, aggiungi le seguenti righe:

ssl_certificate/etc/ssl/certs/self-fird-nginx.CRT;
ssl_certificate_key/etc/ssl/private/self-fird-nginx.chiave;

IL SSL_Certificate è impostato per egoista-nginx.Crt (file di certificato) mentre il ssl_certificate_key è impostato per egoista-nginx.chiave (File chiave).

Salva e chiudi il autofirmato.conf file.

Ora creeremo un altro file di snippet params ssl.conf e configurare alcune impostazioni SSL di base. Emettere il comando seguente nel terminale per modificare il params ssl.conf file:

$ sudo nano/etc/nginx/snippet/ssl-params.conf

Aggiungi i seguenti contenuti al file:

ssl_protocols tlsv1.2;
ssl_prefer_server_ciphers on;
SSL_DHPARAM/ETC/SSL/CERTS/DHPARAM.PEM;
ssl_ciphers Ecdhe-rsa-aes256-gcm-sha512: dhe-rsa-aes256-gcm-sha512: ecdhe-rsa-aes256-gcm-sha384: dhe-rsa-aes256-gcm-sha384: ecdhe-rsa-aes25684;
ssl_ecdh_curve sec384r1;
ssl_session_timeout 10m;
ssl_session_cache condiviso: ssl: 10m;
ssl_session_tickets Off;
# ssl_stapling on;
# ssl_stapling_verify on;
risolver 8.8.8.8 8.8.4.4 validi = 300s;
resolver_timeout 5s;
add_header x-frame-options nega;
add_header x-content-type-options Nosniff;
add_header x-xss-protezione "1; modalità = blocco";

Dato che non stiamo usando un certificato con firma CA, quindi abbiamo disabilitato la graffetta SSL. Se si utilizza un certificato con firma ca ssl_stapling iscrizione.

Passaggio 3: configurazione di NGINX per utilizzare SSL

Ora apriremo il file di configurazione del blocco del server Nginx per effettuare alcune configurazioni. In questo passaggio, supponiamo che tu abbia già impostato il blocco server, che sarà simile a questo:

server
Ascolta 80;
Ascolta [::]: 80;
root/var/www/test.org/html;
indice indice.indice HTML.indice HTM.nginx-debian.html;
test server_name.org www.test.org;
posizione /
try_files $ Uri $ Uri/ = 404;

Per aprire il file di configurazione del blocco del server Nginx, utilizzare il comando seguente:

$ sudo nano/etc/nginx/siti-disponibile/test.org

Ora modifica l'esistenza server Blocca per farlo sembrare così:

server
Ascolta 443 SSL;
Ascolta [::]: 443 SSL;
includere frammenti/autofirmati.conf;
Includi frammenti/params SSL.conf;
root/var/www/test.org/html;
indice indice.indice HTML.indice HTM.nginx-debian.html;
test server_name.org www.test.org;

Nelle configurazioni sopra, abbiamo anche aggiunto gli snippet SSL autofirmato.conf E params ssl.conf che abbiamo configurato in precedenza.

Quindi, aggiungi un file Secondo server bloccare.

server
Ascolta 80;
Ascolta [::]: 80;
test server_name.org www.test.org;
return 302 https: // $ server_name $ request_uri;

Nella configurazione sopra, restituzione 302 Reindirizza l'HTTP a HTTPS.

Nota: Assicurati di sostituire il test.Org con il tuo nome di dominio. Ora salva e chiudi il file.

Passaggio 4: consentire il traffico SSL tramite firewall

Se un firewall è abilitato sul tuo sistema, dovrai consentire il traffico SSL attraverso di esso. Nginx ti fornisce tre diversi profili con UFW. Puoi visualizzarli usando il comando seguente nel terminale:

$ sudo UFW Elenco delle app

Vedrai il seguente output con tre profili per il traffico Nginx.

Dovrai consentire il profilo "nginx completo" nel firewall. Per fare ciò, usa il comando seguente:

$ sudo ufw consenti 'nginx full'

Per verificare se il profilo è stato consentito nel firewall, utilizzare il comando seguente:

$ sudo ufw status

Passaggio 5: test del file di configurazione Nginx

Ora testa il file di configurazione Nginx utilizzando il comando seguente nel terminale:

$ sudo nginx -t

Dovresti vedere l'output di seguito.


Ora crea il legame simbolico tra siti-disponibile e abilitato ai siti:

$ ln -s/etc/nginx/siti -disponibile/test.com/etc/nginx/siti abilitati/

Quindi riavviare il servizio NGINX per applicare le modifiche alla configurazione. Usa il comando seguente per farlo:

$ sudo systemctl riavvio nginx

Passaggio 6: test SSL

Ora per testare l'SSL, vai al seguente indirizzo:

https: // Domain-Or-IP Indirizzo

Dato che abbiamo impostato il certificato autofirmato, quindi vedremo un avvertimento che la connessione non è sicura. Viene visualizzata la pagina seguente quando si utilizza il browser Mozilla Firefox.

Clicca il Avanzate pulsante.

Clic Aggiungere eccezione.

Quindi fare clic Conferma l'eccezione della sicurezza.

Ora vedrai il tuo sito HTTPS ma con un segnale di avvertimento (blocca con un segnale di avvertimento giallo) sulla sicurezza del tuo sito Web.

Inoltre, controlla se il reindirizzamento funziona correttamente accedendo al tuo dominio o indirizzo IP utilizzando HTTP.

http: // Domain-Or-IP Indirizzo

Ora, se il tuo sito reindirizza automaticamente a HTTPS, questo significa che il reindirizzamento ha funzionato correttamente. Per configurare in modo permanente il reindirizzamento, modificare il file di configurazione del blocco server utilizzando il comando seguente nel terminale:

$ sudo nano/etc/nginx/siti-disponibile/test.org

Ora cambia il ritorno 302 ritornare 301 nel file e poi salvalo e chiudilo.

È così che è possibile impostare SSL per NGINX nel sistema Debian 10. Abbiamo creato il certificato autofirmato per la dimostrazione. Se ti trovi in ​​un ambiente di produzione, scegli sempre un certificato CA.