Immaginate di dover far girare nel vostro Server Linux un servizio API pubblico, di gestire le chiamate tramite un Web server Nginx e di voler fornire una connessione sicura SSL alla chiamata fatta direttamente tramite IP…
La soluzione più veloce e a costo zero è quella di creare un Certificato SSL autofirmato.

Gli esempi che andremo a trattare in questo tutorial sono stati testati su un Server Ubuntu 18.04 (per coloro che non avessero a disposizione un Server Ubuntu 18.04 consiglio di visitare il sito internet di Hostinger, un Hosting Provider con i prezzi tra i più competitivi sul mercato) con un Web Server Nginx,

Supponendo di far girare all’interno del Server Ubuntu un servizio API in ascolto su Porta Interna 1234, la prima cosa da fare è quella di creare una configurazione Nginx mettendo in ascolto il Server sulla Porta Pubblica 443, con una location /api/ e dirottato su 127.0.0.1:1234

  sudo nano /etc/nginx/conf.d/myApi.nginx.conf 

Con l’editor “nano” si dovrà inserire questa configurazione

 server{
    listen 443;
    ssl on;    
    ssl_certificate /opt/SSL/myApi.crt;
    ssl_certificate_key /opt/SSL/myApi.key;
    server_name _;
    location /api/ {
        proxy_pass http://127.0.0.1:1234;
    }
 }

Una raccomandazione………..NON RIAVVIARE NGINX perchè restituirebbe un errore in quanto i certificati myApi.crt e myApi.key non sono ancora stati creati!

Creazione del Certificato SSL Autofimato

Per creare il certificato SSL Autofirmato sarà sufficiente digitare in console questo comando

 sudo mkdir /opt/SSL/ 
 sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /opt/SSL/myApi.key -out /opt/SSL/myApi.crt 

Dando invio il sistema chiederà alcune informazioni da memorizzare nel certificato in fase di creazione:
– Country Name (2 letter code) [AU]: IT
– State or Province Name (full name) [Some-State]: UDINE
– Locality Name (eg, city) []: Udine
– Organization Name (eg, company) [Internet Widgits Pty Ltd]: Omar Baruzzo
-Organizational Unit Name (eg, section) []: omarbaruzzo.IT
– Common Name (e.g. server FQDN or YOUR name) []:Omar Baruzzo
– Email Address []:info@omarbaruzzo.it
Una volta inseriti tutti i dati richiesti il Certificato SSL Autofirmato è creato ed è memorizzato all’interno della Path /opt/SSL.

Ora è possibile riavviare nginx tramite questo comando:

 sudo service nginx restart

Il Server Ubuntu 18.04 è settato per permettere all’API di accettare chiamate protette (SSL) dal web,