Wildcard DNS e certificati Let's Encrypt: cosa sono e come ottenere un certificato digitale senza usare un nome di dominio

Come usare un certificato digitale Let's Encrypt su un server locale a fini di test in modo da poter attivare l'utilizzo del protocollo HTTPS.

Un certificato digitale è uno strumento che viene rilasciato da un’autorità di certificazione riconosciuta a livello mondiale che attesta l’identità del proprietario di un sito Web o comunque del soggetto che ha in gestione un nome di dominio.

Il certificato digitale viene utilizzato sul Web in abbinamento con il protocollo HTTPS. Nel caso in cui il certificato fosse scaduto, non valido o generato in proprio senza passare per un’autorità di certificazione il browser mostra il messaggio Sito non sicuro.

Come detto i certificati digitali sono abbinabili a nomi di dominio: non è ovviamente possibile certificare un indirizzo IP.
È possibile collegarsi con un indirizzo IP sul quale è in esecuzione un’applicazione web che utilizza il protocollo HTTPS: in questo caso i dati scambiati tra client e server (e viceversa) saranno comunque protetti da qualunque tentativo di monitoraggio o modifica lungo il percorso grazie all’uso della crittografia ma il browser riporta il messaggio Sito non sicuro perché appunto a un indirizzo IP non è possibile associare un certificato valido.

Capita spesso di provare un’applicazione web in locale prima di pubblicarla online: da WordPress a qualunque altro genere di CMS.
Di solito ciò che si fa è utilizzare un nome a dominio di terzo livello, attivare l’applicazione su di esso e richiedere un certificato digitale a Let’s Encrypt in modo da poter usare HTTPS senza problemi.

Cosa sono i wildcard DNS

Un wildcard DNS è un record che viene aggiunto a livello di DNS e che gestisce le richieste di soluzione di nomi a dominio che non esistono.
Il record si chiama così perché viene usato il simbolo asterisco (*) come prima parte di un nome di dominio (ad esempio *.nomedominio.com). Di norma è sconsigliato utilizzare record wildcard DNS per i propri domini.

Esiste però un servizio che sfrutta il meccanismo dei wildcard DNS per rendere raggiungibile qualunque indirizzo IP pubblico a partire da un indirizzo mnemonico.
Si chiama Nip.io e nella home page è possibile trovare tutti gli schemi utilizzabili.

Provate a visitare la pagina per leggere il vostro indirizzo IP pubblico quindi aprite il prompt dei comandi in Windows o la finestra del terminale Linux.

Digitando ad esempio ping INDIRIZZO_IP.nip.io si otterrà risposta dell’interfaccia di rete del sistema locale (sostituire INDIRIZZO_IP con il proprio indirizzo IP pubblico).

Grazie a Nip.io è possibile rendere raggiungibile il router o l’access point da remoto usando un indirizzo mnemonico (INDIRIZZO_IP.nip.io) anziché un semplice IP pubblico.

All’apparenza può sembrare una minuzia, in realtà si tratta di un passaggio che risulta utilissimo quando si allestisce una configurazione di test.

Come ottenere un certificato digitale Let’s Encrypt con Nip.io

Anziché abbinare un dominio di terzo livello al proprio indirizzo IP, è possibile utilizzare Nip.io quindi richiedere un certificato digitale.

Supponiamo di aver installato in locale un server Linux al fine di utilizzare un’applicazione web come PhotoPrism.
Sul router bisognerà aprire le porte TCP 80 (HTTP) e 443 (HTTPS) inoltrando i pacchetti dati in ingresso verso l’IP locale del server Linux (port forwarding).
Non aprendo le porte ed effettuandone correttamente l’inoltro, Let’s Encrypt non potrà rilasciare alcun certificato digitale.

In ambiente Linux il comando sudo certbot -d seguito dal nome a dominio permette di richiedere a Let’s Encrypt un certificato digitale.
Scrivendo quanto segue si otterrà un certificato digitale associato all’indirizzo mnemonico che punta all’indirizzo IP pubblico associato al router:

sudo certbot -d nomeapp-123-123-123-123.nip.io

Al posto di 123-123-123-123 va indicato il proprio indirizzo IP pubblico mantenendo i segni “meno” al posto del punto.

È importante usare la sintassi indicata perché senza ricorrere a un terzo livello Nip.io personalizzato Let’s Encrypt si rifiuterà di rilasciare il certificato facendo presente che ne sono già stati emessi troppi.

Come si vede nell’immagine abbiamo ottenuto senza problemi un certificato digitale Let’s Encrypt associato tramite Nip.io a un nostro indirizzo IP pubblico.
Il comando certbot è stato tra l’altro eseguito in una macchina virtuale Ubuntu eseguita con WSL2 in Windows 10. Creando apposite regole di reindirizzamento il sistema Linux eseguito con WSL può essere reso raggiungibile dalla rete locale e da host remoti via Internet.

Digitando l’indirizzo mnemonico di Nip.io su un sistema remoto sarà possibile raggiungere senza problemi il server Linux ospitato nella propria infrastruttura locale.

Come si vede il certificato emesso da Let’s Encrypt risulta perfettamente valido e associato al terzo livello Nip.io indicato in precedenza.
Per sincerarsene basta cliccare sul lucchetto di colore grigio quindi controllare i dettagli del certificato digitale.

Ovviamente è opportuno richiedere certificati digitali a Let’s Encrypt specificando soltanto indirizzi Nip.io di terzo livello facenti riferimento a indirizzo IP pubblici associati dal provider di telecomunicazioni in modo statico.
Se non si possedesse un indirizzo IP statico è bene evitare di chiedere l’emissione di certificati digitali a Let’s Encrypt.

Nota importante: l’immagine utilizzata come miniatura del presente articolo e indicata come royalty-free su Pixabay (“Libera per usi commerciali, Attribuzione non richiesta”) ci è stata segnalata come di proprietà di anyIP.io e quindi soggetta a copyright. In attesa di chiarimenti abbiamo provveduto a sostituire l’immagine.

Ti consigliamo anche

Link copiato negli appunti