Come rendere accessibile da Internet tramite SSL un’applicazione web del proprio computer utilizzando Cloudflare e un tunnel SSH

Aggiornamento del 9 marzo 2023: ho pubblicato un nuovo articolo che descrive un metodo ancora più semplice.

A volte di dover rendere accessibile da Internet un’applicazione web in sviluppo sul proprio computer senza doverla necessariamente pubblicare su un server.

Esistono diversi servizi che permettono questa operazione (io a volte ho usato Ngrok) ma tutti richiedono l’installazione di qualche pacchetto o libreria, spesso non open-source.

Con questo sistema, invece, non dobbiamo installare nulla, ci servono solo l’accesso ad un server accessibile da Internet e un account Cloudflare (anche gratuito).

Impostazioni su Cloudflare

Per prima cosa occorre definire nel DNS un nuovo indirizzo (A) che punti all’indirizzo IP del server. Ad esempio definiamo test.artifex.it.

Poi dobbiamo attivare il reindirizzamento automatico verso HTTPS che su Cloudflare è definito come “Automatic HTTPS Rewrites”.

Infine impostiamo la modalità di cifratura SSL/TLS (“SSL/TLS encryption mode”) a “flexible”.

Queste impostazioni si possono anche fare per solo per l’indirizzo che abbiamo appena definito lasciando quelle degli altri come erano utilizzando le “Configuration Rules”.

Impostazioni sul server

Ora colleghiamoci al server come root e configuriamo un reverse proxy per una porta locale, ad esempio 127.0.0.1:8080.

Con Nginx, che per questo scopo è perfetto, sarebbe:

server {
        server_name     test.artifex.it;
        listen          80;
        location / {
                proxy_pass http://127.0.0.1:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
        }
}

Riavviamo Nginx per attivare il nuovo server virtuale.

Ora tutte le richieste fatte a http://test.artifex.it (quindi la porta 80) verranno reindirizzate alla porta locale 127.0.0.1:8080.

Apertura tunnel SSH inverso

Supponiamo che l’applicazione web sia pubblicata sul porta 8000 del computer.

Ci manca la connessione tra il computer e il server.

La realizziamo aprendo un tunnel SSH inverso. Dal nostro computer eseguiamo:

 ssh -R 8080:localhost:8000 <nome_utente>@<indirizzo_server>

Questa operazione fa sì che tutte le richieste fatte al server sulla porta 8080 vengano inoltrate alla porta 8000 del nostro computer.

Con questa ultima operazioni abbiamo completato la connessione. Ora ci si può collegare a https://test.artifex.it visualizzando l’applicazione del computer.

Una nota sulla sicurezza

Attenzione che con questa soluzione il traffico tra CloudFlare e il nostro server sarà in chiaro.

Dunque non usiamo mai questa configurazione per dati reali e/o sensibili!

Per rendere sicuro tutto il canale dobbiamo installare sul server i certificati SSL (andrebbero bene anche quelli auto generati) ed utilizzare modalità di cifratura SSL/TLS “strong” (v. primo paragrafo) per le comunicazioni tra Cloudflare e il server.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *