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:
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:
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.