Creare un certificato wildcard Let's Encrypt
Un certificato wildcard Let’s Encrypt è utile quando più sottodomini devono essere protetti con un unico certificato, ad esempio app.example.com, vpn.example.com e portal.example.com. Può essere una soluzione pratica per Sophos ZTNA, reverse proxy, ambienti di test o diversi servizi web interni.
È importante partire dalla giusta aspettativa: i certificati Let’s Encrypt hanno una durata breve. Il loro vantaggio non è una lunga validità, ma l’emissione gratuita e l’automazione. Se il certificato viene creato manualmente tramite un record DNS TXT, il rinnovo successivo deve essere pianificato consapevolmente.
Per un gateway Sophos ZTNA è necessario un certificato wildcard. Sophos Central può generare questo certificato e successivamente gestirlo e rinnovarlo. In alternativa, è possibile crearlo con Certbot come descritto in questo articolo e caricarlo come certificato personalizzato. Se il certificato deve essere creato direttamente su Sophos Firewall per WAF, WebAdmin o portali, in genere è preferibile il metodo integrato nel firewall: Configurare i certificati Let’s Encrypt su Sophos Firewall.
Quando conviene un certificato wildcard
Un certificato wildcard copre un livello sotto un dominio. *.example.com copre quindi portal.example.com, ma non copre automaticamente example.com né a.b.example.com.
- Molti sottodomini nella stessa zona: Un certificato wildcard può semplificare l’amministrazione.
- Un solo servizio pubblico: Un certificato per un FQDN specifico è spesso più chiaro.
- Il certificato verrà usato su più sistemi: Un certificato wildcard può essere pratico, ma la distribuzione della chiave privata deve essere strettamente controllata.
- È necessario un rinnovo completamente automatico: Occorre prevedere un provider DNS con plugin per Certbot o un altro client ACME.
- Sophos Firewall deve proteggere solo WAF, WebAdmin o portali: Conviene verificare il metodo Let’s Encrypt integrato nel firewall.
Un certificato wildcard non è intrinsecamente più sicuro. Se la stessa chiave privata è memorizzata su più sistemi, aumenta l’impatto di una sua compromissione. È quindi necessario documentare su quali sistemi è stato importato il certificato e chi è responsabile della chiave privata.
Requisiti
Per ottenere un certificato wildcard sono necessari:
- un dominio o una zona di sottodominio delegata sotto il proprio controllo
- per Sophos Central, l’autorizzazione a creare e modificare nel DNS il record CNAME richiesto
- per il metodo Certbot manuale, l’autorizzazione a creare e modificare i record DNS TXT del dominio
- per il metodo manuale, un server Linux o una postazione di amministrazione con Certbot
- per il metodo manuale, l’autorizzazione a eseguire Certbot con privilegi root
- un piano per rinnovo, importazione e conservazione della chiave adatto al metodo scelto
- accesso al sistema di destinazione, come Sophos ZTNA in Sophos Fusion, un reverse proxy o un firewall
I certificati wildcard vengono convalidati tramite la challenge DNS-01. Con il metodo Certbot manuale viene impostato un record TXT in _acme-challenge.example.com. Con il metodo gestito tramite Sophos Central, un record CNAME delega questa verifica a Sophos. La documentazione Let’s Encrypt sui tipi di challenge descrive i tipi di challenge fondamentali.
Per Sophos ZTNA: creare il certificato in Sophos Central
Per un gateway ZTNA, il metodo gestito in Sophos Central è generalmente più semplice di una procedura Certbot manuale: Sophos genera il certificato Let’s Encrypt e ne gestisce poi anche l’amministrazione e il rinnovo. È necessario conoscere il dominio utilizzato dal gateway e avere accesso al relativo provider DNS.
Se la zona DNS utilizza record CAA, Let’s Encrypt deve essere autorizzata come autorità di certificazione. In caso contrario, Let’s Encrypt non può emettere un certificato anche se la convalida del dominio riesce.
- In Sophos Central, aprire I miei prodotti > ZTNA e fare clic su Impostazioni.
- Aprire Domini e certificati e fare clic su Aggiungi dominio. Sophos consente un massimo di 100 domini. Inserire il dominio nel formato
example.come aggiungerlo. - Sophos genera un valore CNAME per questo dominio. Crearlo presso il provider DNS sotto
_acme-challenge.example.com. Sostituireexample.comcon il proprio dominio del gateway. - Tornare a Domini e certificati, fare clic su Convalida e confermare che il record CNAME è stato creato. Sophos verifica così il controllo sul dominio.
- Dopo una convalida riuscita, fare clic su Genera certificato LE, leggere e accettare il Contratto di sottoscrizione Let’s Encrypt e avviare la generazione. Secondo Sophos, richiede circa 60 secondi; durante l’operazione è possibile uscire dalla pagina.
⚠️ Se sotto
_acme-challenge.example.comesiste già un record TXT, deve essere rimosso per usare il record CNAME richiesto da Sophos. Verificare prima se un’altra applicazione necessita di tale record TXT. Il record CNAME deve poi rimanere nel DNS.
Per i domini già presenti in Sophos Central, la procedura dipende dallo stato di convalida:
- Già convalidato mediante un record DNS TXT:
- In I miei prodotti > ZTNA > Impostazioni > Domini e certificati, fare clic su Genera certificato LE.
- In Aggiungi CNAME, copiare il record CNAME e crearlo presso il provider DNS sotto
_acme-challenge.example.com. - Rimuovere un eventuale record TXT presente in tale posizione solo dopo la verifica dell’impatto descritta sopra.
- Confermare la creazione del record CNAME.
- Accettare il Contratto di sottoscrizione Let’s Encrypt e fare clic su Continua.
- Completare la generazione del certificato e verificare in Domini e certificati che il dominio e il relativo record CNAME siano visualizzati nel nuovo formato.
- Non ancora convalidato: Rimuovere il dominio esistente, aggiungerlo nuovamente tramite Aggiungi dominio, convalidarlo con Convalida e quindi ricreare il certificato Let’s Encrypt con Genera certificato LE.
Sophos genera un solo certificato Let’s Encrypt per account Central. Il certificato contiene tutti i domini convalidati. Se in seguito viene convalidato un altro dominio, il certificato deve essere generato nuovamente per includerlo.
Per associare il certificato a un gateway esistente, aprire I miei prodotti > ZTNA > Gateway, selezionare il gateway e impostare Automatico (Let’s Encrypt) in Dominio e certificato. Salvare la modifica e controllare quindi sul gateway la validità e la data di scadenza del certificato. Se la convalida o la generazione non è ancora stata completata correttamente, non passare ancora il gateway al nuovo certificato; verificare prima il record CNAME presso il provider DNS autoritativo.
Installare Certbot
La pagina del progetto Certbot consiglia l’installazione tramite Snap per molti ambienti Linux. Su un sistema Linux adatto, la procedura di base è:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
Se Certbot è già stato installato tramite apt, dnf o un altro gestore di pacchetti, occorre prima verificare quale eseguibile viene effettivamente utilizzato. Metodi di installazione paralleli possono altrimenti portare all’uso di una versione inattesa o a job di rinnovo diversi da quelli previsti.
Creare manualmente il certificato wildcard
Per una convalida DNS manuale, Certbot viene eseguito con --manual e --preferred-challenges dns. In questo esempio, il certificato deve coprire sia example.com sia *.example.com:
sudo certbot certonly --manual --preferred-challenges dns -d example.com -d '*.example.com'
Certbot mostra quindi uno o più valori TXT. Se example.com e *.example.com vengono richiesti insieme, si generano due challenge DNS-01 distinte. Entrambi i valori devono essere aggiunti come record TXT separati in _acme-challenge.example.com. Il secondo record va aggiunto senza sovrascrivere il primo.
Prima di proseguire in Certbot, almeno i name server autoritativi del dominio e un resolver esterno devono restituire i valori TXT attesi. Un singolo resolver è solo un’indicazione, perché i provider DNS possono distribuire le modifiche con velocità diverse a seconda della posizione.
Verifica pratica:
dig TXT _acme-challenge.example.com @1.1.1.1
I name server autoritativi si possono individuare con dig NS example.com. Lo stesso record TXT può quindi essere interrogato direttamente su uno di questi server. Dopo una convalida riuscita, i valori TXT della challenge non più necessari vengono rimossi. I valori obsoleti rendono meno chiare le verifiche successive e, se si accumulano, aumentano inutilmente le dimensioni della risposta DNS.
certonly: Ottenere o rinnovare un certificato senza installarlo.--manual: Impostare manualmente il valore DNS.--preferred-challenges dns: Utilizzare la challenge DNS-01.-d example.com: Includere il dominio root.-d '*.example.com': Includere il dominio wildcard.
Il dominio root e il dominio wildcard sono nomi distinti. Se viene richiesto solo *.example.com, example.com non viene incluso automaticamente.
Quando i due nomi vengono richiesti insieme, possono essere necessari più record TXT con lo stesso nome. DNS lo consente e la convalida spesso fallisce proprio perché un valore TXT esistente viene sovrascritto per errore.
Individuare i file del certificato
Certbot mostra il nome effettivo del certificato, i domini inclusi, la data di scadenza e i percorsi dei file con questo comando di sola lettura:
sudo certbot certificates
Dopo un’emissione riuscita, i file si trovano in genere in:
/etc/letsencrypt/live/example.com/
File importanti:
fullchain.pem: Certificato con i certificati intermedi.cert.pem: Solo il certificato del server.privkey.pem: Chiave privata.chain.pem: Certificati intermedi.
Molti sistemi di destinazione richiedono fullchain.pem e privkey.pem. Alcune finestre di importazione prevedono certificato e chiave separati, mentre altre richiedono anche la catena. Prima dell’importazione bisogna verificare quale formato si aspetta il sistema di destinazione.
⚠️
privkey.pemè la chiave privata. Non deve essere inserita in ticket, chat, e-mail o archivi non protetti. Chiunque ottenga la chiave privata può usare impropriamente il certificato.
Pianificare il rinnovo
Il metodo manuale con --manual è semplice per test e operazioni una tantum, ma è solo parzialmente adatto ai certificati di produzione. Senza automazione, per ogni rinnovo deve essere impostato un nuovo valore DNS TXT.
Per l’uso in produzione esistono tre opzioni ragionevoli:
- Plugin DNS per il provider: Adatto quando Certbot può aggiornare i record DNS tramite API.
- Altro client ACME con automazione DNS: Adatto quando il provider o la piattaforma dispone di un supporto migliore con un altro client.
- Rinnovo manuale con un responsabile e un promemoria: Indicato solo per test o certificati utilizzati raramente.
Le credenziali dell’API DNS sono particolarmente sensibili. Un token DNS deve essere limitato alla zona necessaria e, se possibile, ai tipi di record richiesti. Le credenziali con ampi diritti di amministrazione del dominio non devono essere memorizzate senza protezione su un server web.
Il rinnovo viene normalmente testato con:
sudo certbot renew --dry-run
Per i certificati creati con convalida DNS manuale, questo test è significativo solo se il processo DNS è automatizzato o se gli hook manuali funzionano correttamente.
Un rinnovo riuscito sul sistema Certbot non aggiorna automaticamente un certificato già importato in Sophos Firewall, ZTNA o un reverse proxy. È necessaria una reimportazione documentata oppure un processo di distribuzione testato che venga eseguito solo dopo un rinnovo riuscito. Dopo ogni distribuzione si verificano nomi, catena e nuova data di scadenza direttamente sul sistema di destinazione.
Importare negli ambienti Sophos
Prima di importare il certificato in Sophos ZTNA, un firewall, un reverse proxy o un altro sistema collegato a Sophos, occorre verificare quanto segue:
- Il nome del certificato corrisponde all’hostname pubblico?
- Oltre al wildcard è necessario anche il dominio root?
- Il sistema di destinazione richiede
fullchain.pemo componenti separati? - Accetta la chiave privata o questa deve essere convertita in un altro formato?
- Esiste una procedura documentata per il prossimo rinnovo?
- È noto su quali sistemi è stato importato lo stesso certificato?
Per Sophos ZTNA, il certificato creato con Certbot viene assegnato al gateway in Sophos Central: aprire I miei prodotti > ZTNA > Gateway, fare clic sul nome del gateway e selezionare Carica certificato personalizzato in Dominio e certificato. Caricare il certificato generato e fare clic su Salva. Verificare quindi sul gateway la validità e la data di scadenza; un certificato prossimo alla scadenza deve essere rinnovato, caricato nuovamente e ricontrollato sul gateway.
Se il certificato serve soltanto per WAF, WebAdmin o i portali su Sophos Firewall, il processo integrato è spesso più semplice, perché emissione e rinnovo avvengono direttamente sul firewall. Per i certificati wildcard gestiti esternamente resta rilevante il metodo con Certbot o ACME. Importare e assegnare certificati su Sophos Firewall spiega poi come controllare la chiave privata, la catena CA e l’assegnazione al servizio.
Errori tipici
- La convalida non riesce: Il record TXT non è ancora visibile, il nome della zona DNS è errato oppure uno dei valori TXT è stato sovrascritto. Verificare con
dig TXT _acme-challenge.example.com @1.1.1.1. - Il certificato non copre
example.com: È stato richiesto solo*.example.com. Aggiungere il dominio root con-d example.com. - Il certificato non copre
a.b.example.com: Il wildcard copre un solo livello di sottodominio. Pianificare un certificato separato o un wildcard adatto alla zona più profonda. - Il rinnovo non viene eseguito automaticamente: Il metodo DNS manuale non è automatizzato. Verificare la disponibilità di un plugin DNS adatto o di un altro client ACME.
- Certbot rinnova il certificato, ma il sistema di destinazione presenta ancora quello precedente: La reimportazione o il processo di distribuzione non è stato eseguito. Controllare il numero di serie o la data di scadenza direttamente sulla destinazione.
- L’importazione non riesce: Il file o il formato non è corretto. Confrontare i requisiti relativi a
fullchain.pem,cert.pem,privkey.peme alla catena di certificati. - Le copie della chiave creano un rischio di sicurezza: La chiave privata è memorizzata su più sistemi. Documentare posizione, autorizzazioni di accesso e punti di importazione.
Lista di controllo
- Dominio e livello di sottodominio necessario definiti.
- Dominio root e wildcard selezionati consapevolmente.
- Per Sophos Central: accesso DNS e autorizzazione per il record CNAME richiesto disponibili.
- Per il metodo Certbot manuale: accesso DNS e autorizzazione per i record TXT disponibili.
- Metodo di emissione tramite Sophos Central o un client ACME esterno scelto consapevolmente.
- Certbot installato correttamente per il metodo manuale.
- Convalida del dominio tramite il CNAME Sophos o la challenge DNS-01 manuale verificata correttamente.
- Per il metodo esterno, file del certificato e chiave privata archiviati in sicurezza.
- Per il metodo esterno, sistema di destinazione e formato di importazione necessario noti.
- Rinnovo pianificato tramite Sophos Central o con un responsabile, un calendario o l’automazione DNS.
- Per il metodo esterno, reimportazione o processo di distribuzione al sistema di destinazione testato.
- Vecchi certificati e chiavi rimossi in modo controllato dopo una migrazione riuscita.
Domande frequenti
Un certificato wildcard copre il dominio root?
*.example.com non copre automaticamente example.com. Se servono entrambi, entrambi i nomi devono essere inclusi nel certificato.Perché un certificato wildcard richiede la convalida DNS?
Un certificato wildcard creato manualmente può rinnovarsi automaticamente?
Quali file sono necessari per l'importazione?
fullchain.pem e privkey.pem. A seconda del sistema di destinazione, possono servire anche cert.pem o chain.pem.