Let’s Encrypt con Cert Warden
Let’s Encrypt con Cert Warden
Let’s Encrypt con Cert Warden (challenge DNS-01)
Cert Warden è un gestore di certificati che ospiti tu stesso: ordina e rinnova i certificati Let’s Encrypt e li distribuisce ai tuoi server. Con i due script seguenti Cert Warden esegue la verifica tramite la nostra API DNS, cioè con il challenge DNS-01. Funziona senza porta 80 aperta, anche per sistemi non raggiungibili da internet, e per certificati wildcard come *.tuodominio.ch.
Requisiti
- Il dominio deve puntare ai nostri server dei nomi, la zona DNS deve quindi essere ospitata presso FireStorm
- Accesso API attivato nell’area clienti (
admin.firestorm.ch=> Account => Profilo cliente) - Un’installazione Cert Warden funzionante, di solito come container Docker
- Nel container deve essere presente
curl.jqviene usato se disponibile, ma non è necessario
1. Creare una chiave API
Accedi all’area clienti e apri Account => Profilo cliente.
Spunta Accesso API e clicca su GESTISCI CHIAVI API.
Crea una nuova chiave:
- Denominazione: per esempio
certwarden - Domini: seleziona i domini interessati
- Consenti anche la gestione DNS completa: spunta la casella
Annota la chiave API. Viene mostrata una sola volta.
2. Preparare gli script
Colloca i due script nella memoria permanente del tuo container Cert Warden, per esempio sotto /app/data/scripts/:
curl -o /app/data/scripts/firestorm_dns01_challenge_add.sh https://api.firestorm.ch/downloads/firestorm_dns01_challenge_add.txt curl -o /app/data/scripts/firestorm_dns01_challenge_del.sh https://api.firestorm.ch/downloads/firestorm_dns01_challenge_del.txt chmod 755 /app/data/scripts/firestorm_dns01_challenge_add.sh /app/data/scripts/firestorm_dns01_challenge_del.sh
Se scarichi i file da un computer Windows, assicurati che vengano salvati con fine riga Unix. Altrimenti il container segnala bad interpreter all’avvio dello script.
3. Creare il challenge provider in Cert Warden
Apri in Cert Warden la sezione Providers e crea un New Challenge Provider.
| Campo | Valore |
|---|---|
| Provider Type | DNS-01 Manual Script |
| Domains | Il tuo dominio, per esempio tuodominio.ch |
| Post Provision Wait | 300 |
| Environment Variables | FIRESTORM_API_KEY=LA-TUA-CHIAVE-API |
| Path to DNS Record Create Script | /app/data/scripts/firestorm_dns01_challenge_add.sh |
| Path to DNS Record Delete Script | /app/data/scripts/firestorm_dns01_challenge_del.sh |
Salva con SUBMIT. Poi puoi ordinare un certificato: Cert Warden imposta il record TXT da solo e lo rimuove dopo la verifica.
Altre impostazioni
Gli script si comandano tramite variabili d’ambiente. Obbligatoria è solo la chiave API, tutto il resto è facoltativo:
| Variabile | Significato |
|---|---|
FIRESTORM_API_KEY |
La tua chiave API. Unico dato obbligatorio |
FIRESTORM_ZONE_ID |
ID di zona fisso. Se resta vuoto, lo script cerca da solo la zona adatta tramite l’elenco delle zone. Con una chiave limitata a determinate zone che non può vedere l’elenco, inserisci qui l’ID |
FIRESTORM_TTL |
Durata di validità del record TXT, valore predefinito 60 |
FIRESTORM_TIMEOUT |
Tempo di attesa della chiamata API in secondi, valore predefinito 180 |
FIRESTORM_DEBUG |
1 scrive richieste e risposte nel protocollo, la chiave resta mascherata |
Questa chiamata ti fornisce l’ID della zona:
curl -H "X-Api-Key: LA-TUA-CHIAVE-API" https://api.firestorm.ch/dns/v1/zones
Provare a mano
Entrambi gli script possono essere richiamati direttamente, anche da altri client ACME. La prova a vuoto non modifica nulla e mostra solo che cosa verrebbe inviato:
FIRESTORM_API_KEY=LA-TUA-CHIAVE-API ./firestorm_dns01_challenge_add.sh --dry-run "_acme-challenge.test.tuodominio.ch" "valoretest"
Senza --dry-run il record viene davvero creato e poi rimosso:
FIRESTORM_API_KEY=LA-TUA-CHIAVE-API ./firestorm_dns01_challenge_add.sh "_acme-challenge.test.tuodominio.ch" "valoretest" FIRESTORM_API_KEY=LA-TUA-CHIAVE-API ./firestorm_dns01_challenge_del.sh "_acme-challenge.test.tuodominio.ch" "valoretest"
Con --help gli script mostrano la loro descrizione completa.
Risoluzione dei problemi
La creazione richiede uno o due minuti
È voluto. Per i record di challenge la nostra API attende da sé che tutti i nostri server dei nomi conoscano il valore e solo allora risponde. Lo script quindi non è bloccato, sta aspettando.
«Autenticazione fallita»
Controlla la chiave API e se l’accesso API è attivato nel profilo cliente. Dopo diversi tentativi errati la nostra protezione blocca temporaneamente l’indirizzo IP.
«Accesso negato»
La chiave è limitata a determinati domini e la zona richiesta non è tra questi, oppure alla creazione non è stata consentita la gestione DNS completa.
«Nessuna zona corrispondente trovata»
Il dominio non esiste come zona nel tuo account, oppure la chiave non può vederlo. In questo caso indica esplicitamente FIRESTORM_ZONE_ID.
«bad interpreter» all’avvio dello script
Il file ha fine riga Windows. Salvalo con fine riga Unix oppure esegui nel container sed -i 's/\r$//' firestorm_dns01_challenge_add.sh.
La verifica fallisce anche se il record è impostato
Aumenta in Cert Warden il valore di Post Provision Wait.
Altre istruzioni sulla nostra interfaccia si trovano nell’articolo API DNS. Gli script ci sono stati gentilmente messi a disposizione da un nostro cliente.




