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:
1 |
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt |
1 2 3 4 5 6 7 |
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:
1 |
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:
1 |
sudo nano /etc/nginx/snippets/self-signed.conf |
All’interno del file creato inseriamo le seguenti righe quindi salviamo e usciamo
1 2 |
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:
1 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# 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°…
Mi sono avvicinato al mondo dell’informatica nel lontano 1996 con Windows 95 e da allora non ho più smesso di dedicarmi allo studio ed approfondimento di questo settore.
Laureato in Ingegneria Informatica nel 2009, lavoro nel campo dell’IT dal lontano 2001.
Grande! Tra mille che hanno provato tu ci sei riuscito! GRANDE!!!