Molti servizi di casa non dovrebbero mai essere esposti su Internet: il pannello del NAS, il gestore di documenti, l'archivio delle password. Eppure anche questi meritano HTTPS, e non soltanto per evitare l'avviso del browser. Alcune funzioni moderne, come le passkey, le notifiche web o l'installazione come applicazione, richiedono un contesto sicuro, e certe app per telefono rifiutano i certificati non riconosciuti. La soluzione più pulita è ottenere certificati pubblici validi senza aprire alcuna porta, grazie alla sfida DNS.
Perché non bastano i certificati autofirmati
Un certificato autofirmato cifra la connessione, ma nessun dispositivo lo riconosce. Si possono installare manualmente le proprie autorità su ogni computer e telefono di casa, ma la gestione diventa faticosa: ogni nuovo dispositivo, ogni ospite, ogni reinstallazione richiede un intervento. Alcuni sistemi, inoltre, rendono l'installazione di autorità personalizzate scomoda per le app. Con un certificato pubblico tutto funziona subito, ovunque.
Il prerequisito: un dominio proprio
Per ottenere un certificato pubblico serve un dominio registrato a proprio nome, anche economico. I servizi di casa useranno sottodomini come foto.casa.esempio o documenti.casa.esempio. Il dominio deve essere gestito da un fornitore DNS che offra un'interfaccia programmabile (API), perché il rinnovo dei certificati dovrà avvenire in automatico.
Come funziona la sfida DNS-01
Le autorità di certificazione che usano il protocollo ACME, come Let's Encrypt, devono verificare che chi chiede il certificato controlli davvero il dominio. Esistono diverse sfide; le due più comuni sono:
- HTTP-01: l'autorità scarica un file da un indirizzo del server. Richiede che il server sia raggiungibile da Internet sulla porta 80.
- DNS-01: il richiedente crea un record TXT chiamato
_acme-challengenel DNS del dominio, e l'autorità lo legge. Il server non deve essere raggiungibile da fuori.
La sfida DNS-01 è quindi perfetta per i servizi interni: il server di casa parla con l'API del fornitore DNS, crea il record, ottiene il certificato e lo cancella. Nessuna porta aperta, nessuna esposizione.
Certificati wildcard: uno per tutti
Con la sfida DNS è possibile ottenere un certificato wildcard, valido per *.casa.esempio, cioè per qualunque sottodominio di primo livello. Il vantaggio è doppio:
- Si gestisce un solo certificato per tutti i servizi.
- I nomi dei singoli servizi non compaiono nei registri pubblici di Certificate Transparency, dove ogni certificato emesso viene pubblicato.
Questo secondo punto è spesso sottovalutato: chiunque può consultare quei registri e scoprire che esiste vault.casa.esempio. Con un wildcard compare soltanto il nome generico.
Gli strumenti
Quasi tutti i reverse proxy usati in casa supportano la sfida DNS, spesso tramite moduli per i fornitori più diffusi. In alternativa si possono usare client ACME autonomi.
| Strumento | Come gestisce la sfida DNS |
|---|---|
| Caddy | Moduli per i fornitori DNS, da includere nella build |
| Traefik | Supporto integrato per molti fornitori |
| Nginx Proxy Manager | Opzione nell'interfaccia, con credenziali del fornitore |
| acme.sh, Certbot | Client da riga di comando con plugin o script |
Qualunque strumento si scelga, il token API va creato con i permessi minimi: solo la modifica dei record DNS, possibilmente solo per quella zona. Se il token finisse nelle mani sbagliate, i danni resterebbero limitati.
Il DNS locale: far puntare i nomi in casa
Il certificato da solo non basta: i dispositivi di casa devono risolvere foto.casa.esempio nell'indirizzo privato del server, per esempio 192.168.1.20. Le strade principali sono due:
- Record nel DNS pubblico che puntano a indirizzi privati: semplice, ma alcuni router bloccano queste risposte come protezione da attacchi di DNS rebinding, e il nome resta visibile pubblicamente.
- DNS locale: il resolver di casa (il router, Pi-hole, AdGuard Home o un server dedicato) risponde con l'indirizzo interno, mentre il DNS pubblico non contiene nulla. È la soluzione più pulita.
Con il DNS locale, il dominio pubblico serve soltanto a superare la sfida e a ottenere il certificato, mentre la risoluzione dei nomi resta interamente in casa.
Rinnovi e controlli
I certificati ACME hanno una durata breve, nell'ordine di pochi mesi, e vengono rinnovati automaticamente in anticipo. Proprio perché è automatico, il rinnovo va sorvegliato: un token scaduto o un cambio nell'API del fornitore possono interromperlo in silenzio. Conviene impostare un controllo che avvisi quando un certificato è vicino alla scadenza, così da intervenire con calma.
In sintesi
- Anche i servizi interni beneficiano di certificati pubblici riconosciuti.
- La sfida DNS-01 rilascia certificati senza esporre il server su Internet.
- Un wildcard copre tutti i servizi e nasconde i loro nomi nei registri pubblici.
- Il token API del fornitore DNS va limitato al minimo indispensabile.
- Un DNS locale tiene la risoluzione dei nomi interamente in casa.