Nginx

Configurazione SSL Nginx in Linux

Configurazione SSL Nginx in Linux

SSL (acronimo di secure socket layer) è un protocollo web che rende sicuro il traffico tra server e client crittografandolo. Server e client trasmettono il traffico in modo sicuro senza il rischio che la comunicazione venga interpretata da terzi. Aiuta anche il cliente a verificare l'identità del sito web con cui sta 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 tuo server. Pertanto, dovrebbe essere utilizzato solo per ambienti di test o per servizi LAN interni. Per l'ambiente di produzione, è meglio utilizzare i certificati firmati da CA (autorità di certificazione).

Prerequisiti

Per questo post, dovresti avere i seguenti prerequisiti:

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

Passaggio 1: generazione di un certificato autofirmato

Il nostro primo passo sarà generare un certificato autofirmato. Emetti il ​​comando seguente in 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/selfsigned-nginx.key -out /etc/ssl/certs/selfsigned-nginx.crt

Ti verrà chiesto di fornire alcune informazioni come il nome del paese, lo stato, la località, il nome comune (il tuo nome di dominio o indirizzo IP) e l'indirizzo email.

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

Ora crea il dhparami.pem file utilizzando il comando seguente:

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Passaggio 2: configurazione di Nginx per l'utilizzo di SSL

Nel passaggio precedente, abbiamo creato la 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 certificati SSL e posizioni delle chiavi.

Immetti il ​​comando seguente in Terminale per creare un nuovo frammento di configurazione autofirmato.conf file nel /etc/nginx/snippets.

$ sudo nano /etc/nginx/snippets/self-signed.conf

Nel file, aggiungi le seguenti righe:

ssl_certificate /etc/ssl/certs/selfsigned-nginx.crt;
ssl_certificate_key /etc/ssl/private/selfsigned-nginx.chiave;

Il certificato_ssl è impostato per autofirmato-nginx.crt (file di certificato) mentre il ssl_certificate_key è impostato per autofirmato-nginx.chiave (file chiave).

Salva e chiudi il autofirmato.conf file.

Ora creeremo un altro file snippet parametri sslpara.conf e configurare alcune impostazioni SSL di base. Emetti il ​​comando seguente in Terminale per modificare il parametri sslpara.conf file:

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

Aggiungi il seguente contenuto al file:

ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers attivo;
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-AES256-SHA384;
ssl_ecdh_curve secp384r1;
ssl_session_timeout  10 m;
ssl_session_cache condiviso: SSL: 10 m;
ssl_session_tickets disattivato;
# ssl_stapling attivo;
# ssl_stapling_verify attivo;
risolutore 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 Protezione X-XSS "1; mode=block";

Poiché non stiamo utilizzando un certificato firmato da una CA, abbiamo disabilitato la pinzatura SSL. Se stai utilizzando un certificato firmato da una CA, decommenta il ssl_stapling iscrizione.

Passaggio 3: configurazione di Nginx per l'utilizzo di 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 del 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 nome_server.org www.test.organizzazione;
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/sites-available/test.organizzazione

Ora modifica l'esistente server blocco per renderlo simile a questo:

server
ascolta 443 ssl;
ascolta [::]:443 ssl;
includi snippet/autofirmato.conf;
includi snippet/parametri ssl.conf;
root /var/www/test.org/html;
indice indice.indice html.indice htm.nginx-debian.html;
test nome_server.org www.test.organizzazione;

Nelle configurazioni di cui sopra, abbiamo anche aggiunto gli snippet SSL autofirmato.conf e parametri sslpara.conf che abbiamo configurato in precedenza.

Quindi, aggiungi a secondo server bloccare.

server
ascolta 80;
ascolta [::]:80;
test nome_server.org www.test.organizzazione;
restituire 302 https://$server_name$request_uri;

Nella configurazione sopra, ritorno 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 offre tre diversi profili con ufw. Puoi visualizzarli usando il comando seguente in Terminale:

$ sudo ufw app list

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

Dovrai consentire il profilo "Nginx Full" nel firewall. Per farlo, usa il comando seguente:

$ sudo ufw allow '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 prova il file di configurazione di Nginx usando il comando seguente in Terminale:

$ sudo nginx -t

Dovresti vedere l'output qui sotto.


Ora crea il collegamento simbolico tra i siti disponibili e i siti abilitati:

$ ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/

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

$ sudo systemctl riavvia nginx

Passaggio 6: verifica SSL

Ora per testare SSL, vai al seguente indirizzo:

https://dominio-o-indirizzo IP

Poiché abbiamo impostato il certificato autofirmato, quindi vedremo un avviso che la connessione non è sicura. La seguente pagina viene visualizzata quando si utilizza il browser Mozilla Firefox.

Clicca il Avanzate pulsante.

Clic Aggiungere eccezione.

Quindi fare clic su Conferma eccezione di sicurezza.

Ora vedrai il tuo sito HTTPS ma con un segnale di avvertimento (lucchetto 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://dominio-o-indirizzo IP

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

$ sudo nano /etc/nginx/sites-available/test.organizzazione

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

È così che puoi configurare SSL per Nginx nel sistema Debian 10. Abbiamo impostato il certificato autofirmato per la dimostrazione. Se ti trovi in ​​un ambiente di produzione, scegli sempre un certificato CA.

Le 5 migliori carte di acquisizione del gioco
Abbiamo tutti visto e amato i giochi in streaming su YouTube. PewDiePie, Jakesepticye e Markiplier sono solo alcuni dei migliori giocatori che hanno g...
Come sviluppare un gioco su Linux
Un decennio fa, non molti utenti Linux avrebbero previsto che il loro sistema operativo preferito un giorno sarebbe diventato una piattaforma di gioco...
Porte open source di motori di gioco commerciali
Ricreazioni del motore di gioco gratuite, open source e multipiattaforma possono essere utilizzate per riprodurre titoli di giochi vecchi e abbastanza...