Let’s Encrypt con Cert Warden

Skip to main content
Du bist hier:
Drucken

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. jq viene usato se disponibile, ma non è necessario

 

1. Creare una chiave API

Accedi all’area clienti e apri Account => Profilo cliente.

Menu Account con la voce Profilo cliente

Spunta Accesso API e clicca su GESTISCI CHIAVI API.

Attivare l'accesso API e aprire la gestione delle chiavi API

Crea una nuova chiave:

  • Denominazione: per esempio certwarden
  • Domini: seleziona i domini interessati
  • Consenti anche la gestione DNS completa: spunta la casella

Finestra di gestione delle chiavi API con denominazione, scelta dei domini e autorizzazione

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.

Sezione Providers in Cert Warden

Creazione di un nuovo challenge provider di tipo DNS-01 Manual Script

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.

Related Post