Questa guida mostra come installare e automatizzare i certificati SSL sui firewall FortiGate utilizzando il protocollo ACME con External Account Binding (EAB), il metodo standard utilizzato dalle autorità di certificazione commerciali per l’automazione sicura.

Imparerai due modi per distribuire:
- Integrazione nativa di FortiGate ACME con le credenziali EAB
- Emissione esterna con ACME.sh, seguita da importazione in FortiGate
Entrambi i metodi sono compatibili con gli endpoint ACME commerciali che emettono certificati attraverso l’autenticazione KID + HMAC.
Prima di iniziare
Avrai bisogno di:
- FortiGate 7.6.0 o più recente (le versioni precedenti non supportano EAB)
- Accesso root o admin al FortiGate CLI
- URL della directory ACME del tuo fornitore di certificati
- Credenziali EAB (ID chiave + chiave HMAC)
- Un nome di dominio con record DNS A/AAA validi che puntano all’IP pubblico del FortiGate.
- Porta 80 raggiungibile da internet per la convalida HTTP-01
Passo 1: Verifica la versione del firmware
Usa l’interfaccia a riga di comando per verificare la versione di FortiOS:
get system status
Assicurati che venga visualizzato FortiOS 7.6.0 o più recente. In caso contrario, aggiorna prima. Le versioni precedenti non includono i campi acme-eab-key-id e acme-eab-key-hmac.
Passo 2: Creare un oggetto certificato locale per ACME
Esegui il comando seguente:
config vpn certificate local
edit "acme-vpn-cert"
set enrollment acme
set acme-ca-url "https://acme.yourca.com/v2/acme"
set acme-eab-key-id "YOUR_EAB_KID"
set acme-eab-key-hmac "YOUR_EAB_HMAC_KEY"
set acme-email "[email protected]"
set acme-domain "vpn.example.com"
set acme-auth-url "http://vpn.example.com/.well-known/acme-challenge"
set auto-regenerate-days 30
set auto-regenerate enable
next
end
Questo comando crea un nuovo oggetto certificato locale chiamato acme-vpn-cert e indica a FortiGate di richiederlo e rinnovarlo automaticamente dalla CA commerciale utilizzando il protocollo ACME con External Account Binding.
Le parti principali sono spiegate:
set enrollment acme: indica al FortiGate che il certificato sarà gestito tramite ACME e non importato manualmente.set acme-ca-url: l’endpoint della directory ACME della tua autorità di certificazione.-
set acme-eab-key-id/set acme-eab-key-hmac: le tue credenziali EAB (KID e HMAC) che autorizzano il tuo account con la CA. set acme-email: utilizzato per le notifiche di rinnovo e per il contatto con la CA.set acme-domain: il dominio che FortiGate convaliderà e proteggerà.set acme-auth-url: la posizione HTTP in cui la CA inserisce e verifica la sfida ACME.-
set auto-regenerateeauto-regenerate-days: attiva il rinnovo automatico prima della scadenza.
Passo 3: Verifica il percorso di validazione
Il FortiGate deve rispondere a http://vpn.example.com/.well-known/acme-challenge/.
Se hai attivato il reindirizzamento HTTPS, aggiungi una regola di bypass in modo che il percorso di sfida rimanga su HTTP normale durante la convalida.
Ecco come fare per i server virtuali:
config firewall vip
edit "acme-http"
set extintf "wan1"
set extip <your-public-ip>
set mappedip "192.168.1.99"
set extport 80
set mappedport 80
set protocol tcp
next
end
Sostituisci <your-public-ip> e 192.168.1.99 con i tuoi reali indirizzi IP esterni e interni. Questi valori sono segnaposto utilizzati solo a titolo di esempio.
Passo 4: Attivare la richiesta iniziale
Ora che FortiGate sa come raggiungere la CA e dove collocare i file di convalida, puoi iniziare il processo di registrazione del certificato:
execute vpn certificate local generate "acme-vpn-cert"
Questo comando indica al FortiGate di contattare la CA, eseguire la convalida del dominio e recuperare automaticamente il certificato firmato.
Passo 5: Controllare lo stato del certificato
Per verificare lo stato del tuo certificato, esegui il seguente comando:
get vpn certificate local
Dovresti vedere:
Status: valid
Issuer: Your CA Name
Se lo stato rimane in sospeso o non valido, ricontrolla la raggiungibilità del DNS e della porta 80.
Passo 6: Applicare il certificato
Usa la GUI o la CLI per assegnarlo ai servizi SSL VPN, HTTPS management o proxy:
config vpn ssl settings
set servercert "acme-vpn-cert"
end
Ecco come farlo tramite interfaccia grafica:
Vai su VPN > Impostazioni SSL-VPN > Certificato del server > Seleziona acme-vpn-cert.
Fase 7: Risoluzione dei problemi e rinnovi
Se il certificato non viene rilasciato subito, i motivi più comuni sono:
- Il server ACME non è riuscito a raggiungere l’URL di convalida (porta 80 aperta).
- La tua chiave KID o HMAC non corrisponde a quella prevista dalla CA.
- Hai raggiunto un limite temporaneo di replay o di velocità; riprova dopo qualche minuto.
Una volta che il certificato è valido, FortiGate gestirà automaticamente i rinnovi in base alle impostazioni di auto-regenerate-days. Puoi testare il rinnovo in qualsiasi momento con:
execute vpn certificate local renew "acme-vpn-cert"
Fallback: Emissione esterna (ACME.sh) e importazione nel FortiGate
Se l’endpoint ACME della tua CA non funziona direttamente con FortiGate, puoi rilasciare il certificato esternamente con ACME.sh e importarlo. Ecco come fare:
Passo 1: Installare ACME.sh
Esegui questi comandi su qualsiasi sistema Linux, macOS o BSD che abbia accesso a Internet. Non devi eseguirli sul FortiGate stesso (il FortiGate non supporta gli script di shell personalizzati).
curl https://get.acme.sh | sh
source ~/.bashrc
Questo installa il client acme.sh nella tua home directory e lo carica nella tua shell. Sostituisci il segnaposto con la tua CA reale e i dettagli.
Passo 2: Registra il tuo account ACME con EAB
acme.sh --register-account \
--server https://acme.yourca.com/v2/acme \
--eab-kid "YOUR_EAB_KID" \
--eab-hmac-key "YOUR_EAB_HMAC_KEY" \
-m [email protected]
Passo 3: Rilasciare il certificato
acme.sh --issue \
-d vpn.example.com \
--webroot /var/www/html \
--server https://acme.yourca.com/v2/acme \
--eab-kid "YOUR_EAB_KID" \
--eab-hmac-key "YOUR_EAB_HMAC_KEY"
Passo 4: Individuare i file dei certificati
Dopo l’emissione, i file del certificato vengono memorizzati nella tua home directory sotto la voce ~/.acme.sh/vpn.example.com/
All’interno di questa cartella troverai:
- fullchain.cer – la catena completa dei certificati
- vpn.example.com.key – la tua chiave privata
- ca.cer – il certificato della CA intermedia
Puoi aprirli con un editor di testo o verificarne i dettagli tramite OpenSSL:
openssl x509 -in fullchain.cer -noout -dates -issuer -subject
Passo 5: Importazione nel FortiGate
Puoi importare il certificato tramite la GUI:
Vai su: Sistema > Certificati > Importa > Certificato locale e
carica il certificato e la chiave privata.
Oppure puoi utilizzare la CLI:
config vpn certificate local
edit "acme-vpn-cert"
set private-key "-----BEGIN PRIVATE KEY-----..."
set certificate "-----BEGIN CERTIFICATE-----..."
next
end
Passo 6: Assegnazione e rinnovo
Una volta rinnovato il certificato, assicurati di riassegnarlo alla tua SSL VPN o all’interfaccia web del FortiGate (se non si applica automaticamente). Se stai utilizzando un client ACME esterno su un server diverso, imposta un’attività programmata (come un cron job) per copiare automaticamente i file del nuovo certificato sul FortiGate, utilizzando SCP o una chiamata API.
Esempio:
scp ~/.acme.sh/vpn.example.com/fullchain.cer admin@fortigate:/root/
scp ~/.acme.sh/vpn.example.com/vpn.example.com.key admin@fortigate:/root/
Poi ricarica il certificato:
execute vpn certificate local import "acme-vpn-cert"
Domande comuni
Se stai configurando ACME con un CA commerciale per la prima volta, ti vengono in mente alcune domande. Ecco le risposte rapide a quelle che vediamo più spesso:
Posso utilizzare questa configurazione con qualsiasi CA commerciale?
Sì, a patto che il tuo provider supporti ACME + External Account Binding (EAB). Le principali CA come Sectigo e DigiCert forniscono già gli URL della directory ACME e le credenziali EAB.
Devo aprire entrambe le porte HTTP e HTTPS per la convalida?
Solo la porta 80 (HTTP) è necessaria per la convalida HTTP-01 di ACME. Tieni aperta la porta HTTPS (443) per il traffico normale, ma non reindirizzare le richieste di convalida da HTTP a HTTPS.
Cosa succede se il mio certificato non si rinnova automaticamente?
Puoi attivare il rinnovo manuale in qualsiasi momento con:
execute vpn certificate local renew "acme-vpn-cert"
Se ancora non funziona, ricontrolla le credenziali EAB, il DNS del dominio e verifica che il firewall consenta l’accesso in uscita all’endpoint ACME della tua CA.
Posso utilizzare le stesse credenziali EAB su più FortiGate?
Dipende dal tuo CA. Alcune permettono di riutilizzare un account per più dispositivi, altre rilasciano credenziali uniche per ordine o dominio. Segui sempre la politica del tuo CA per evitare limiti di tariffa o conflitti di account.
Parole finali
Ora sai come installare un certificato SSL ACME suFortiGate, sia attraverso l’integrazione nativa di EAB che attraverso l’emissione esterna tramite ACME.sh.
Entrambi i metodi soddisfano gli standard di sicurezza aziendali e supportano i rinnovi completamente automatizzati con le autorità di certificazione commerciali.
Risparmia il 10% sui certificati SSL ordinando oggi stesso da SSL Dragon!
Emissione rapida, crittografia avanzata, affidabilità del browser al 99,99%, assistenza dedicata e garanzia di rimborso entro 25 giorni. Codice coupon: SAVE10

