PRE-REQUISITI
Prima di iniziare, è necessario disporre di un utentza root sul sistem Ubuntu Server.
Inoltre, sarà necessario installare il server web Nginx.
CREAZIONE DEL CERTIFICATO SSL
TLS / SSL funziona utilizzando una combinazione di un certificato pubblico e di una chiave privata. Il codice SSL viene mantenuto segreto sul server. Viene utilizzato per crittografare i contenuti inviati ai client. Il certificato SSL è pubblicamente condiviso con chiunque richiede il contenuto. Può essere utilizzato per decrittografare il contenuto firmato dal relativo codice SSL.
Possiamo creare chiave pubblica e priovata con OpenSSL lanciando il comando:
0 |
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt |
0 1 2 3 4 5 6 |
Country Name (2 letter code) [AU]:IT State or Province Name (full name) [Some-State]:Torino Locality Name (eg, city) []:Torino Organization Name (eg, company) [Internet Widgits Pty Ltd]:ACME S.r.l. Organizational Unit Name (eg, section) []:ACME S.r.l. Common Name (e.g. server FQDN or YOUR name) []:NOME_DEL_SERVER (va bene mettere anche lì'IP Address) Email Address []:admin@dominio.com |
Entrambi i file creati verranno collocati nelle sottodirectory appropriate della directory /etc/ssl.
Mentre utilizziamo OpenSSL, dobbiamo anche creare il gruppo Diffie-Hellman, utilizzato per negoziare Perfect Forward Secrecy con i clienti.
Creiamo il gruppo con questo comando:
0 |
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 |
Questa operazione può richiedere diversi minuti ed al termine avremo un gruppo DH in /etc/ssl/certs/dhparam.pem che possiamo usare nella nostra configurazione.
CONFIGURARE NGINX PER L’UTILIZZO DEL CERTIFICATO SSL
Abbiamo creato i nostri file chiavi e certificati sotto la directory /etc/ssl.
Ora abbiamo solo bisogno di modificare la nostra configurazione Nginx per utilizzare l’SSL
Innanzitutto, creiamo un nuovo snippet di configurazione Nginx nella directory /etc/nginx/snippets.
Per distinguere correttamente lo scopo di questo file, lo chiamiamo self-signed.conf:
0 |
sudo nano /etc/nginx/snippets/self-signed.conf |
All’interno del file creato inseriamo le seguenti righe quindi salviamo e usciamo
0 1 |
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; |
Successivamente creeremo un altro snippet che definirà alcune impostazioni SSL. Questo proteggerà Nginx con una forte suite di codici SSL e abiliterà alcune funzionalità avanzate che contribuiranno a mantenere sicuro il nostro server.
I parametri che verranno impostati possono essere riutilizzati nelle future configurazioni di Nginx, quindi daremo al file un nome generico:
0 |
sudo nano /etc/nginx/snippets/ssl-params.conf |
Per impostare in sicurezza la Nginx SSL, utilizzeremo le raccomandazioni di Remy van Elst sul sito Cipherli.st.
Inseriamo quindi nel file creato le seguenti righe di codice:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# from https://cipherli.st/ # and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_ecdh_curve secp384r1; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; # Disable preloading HSTS for now. You can use the commented out header line that includes # the "preload" directive if you understand the implications. #add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; ssl_dhparam /etc/ssl/certs/dhparam.pem; |
Salviamo il file ed usciamo dall’editor.
A questo punto è possibile customizzare la configurazione del nostro Nginx per l’utilizzo del certificato SSL creato.
Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi.
Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare.
Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.
Grande! Tra mille che hanno provato tu ci sei riuscito! GRANDE!!!