bg-tutorials

Comment installer un certificat SSL ACME sur le FortiGate

Ce guide montre comment installer et automatiser les certificats SSL sur les pare-feux FortiGate en utilisant le protocole ACME avec External Account Binding (EAB), la méthode standard utilisée par les autorités de certification commerciales pour l’automatisation sécurisée.

Frotigate ACME SSL

Vous apprendrez deux méthodes de déploiement :

  1. Intégration native de FortiGate ACME avec les informations d’identification EAB
  2. Délivrance externe avec ACME.sh, suivie d’une importation dans le FortiGate

Les deux méthodes sont compatibles avec les terminaux commerciaux ACME qui émettent des certificats par le biais de l’authentification KID + HMAC.


Avant de commencer

Vous aurez besoin de :

  • FortiGate 7.6.0 ou plus récent (les versions antérieures ne supportent pas EAB)
  • Accès racine ou administrateur à la CLI de FortiGate
  • URL du répertoire ACME de votre fournisseur de certificats
  • Informations d’identification du VAE (ID de la clé + clé HMAC)
  • Un nom de domaine avec des enregistrements DNS A/AAAA valides pointant vers l’IP publique de votre FortiGate.
  • Port 80 accessible depuis l’internet pour la validation HTTP-01

Étape 1 : Vérifiez la version de votre micrologiciel

Utilisez l’interface de ligne de commande pour vérifier la version de votre FortiOS :

get system status

Assurez-vous que FortiOS 7.6.0 ou une version plus récente s’affiche. Si ce n’est pas le cas, procédez d’abord à une mise à niveau. Les anciennes versions n’incluent pas les champs acme-eab-key-id et acme-eab-key-hmac.


Étape 2 : Créer un objet de certificat local pour ACME

Exécutez la commande ci-dessous :

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

Cette commande crée un nouvel objet de certificat local nommé acme-vpn-cert et indique au FortiGate de le demander et de le renouveler automatiquement auprès de votre autorité de certification commerciale à l’aide du protocole ACME avec External Account Binding.

Les principaux éléments sont expliqués :

  • set enrollment acme: indique au FortiGate que ce certificat sera géré par ACME, et non pas importé manuellement.
  • set acme-ca-url: le point de terminaison du répertoire ACME de votre autorité de certification.
  • set acme-eab-key-id / set acme-eab-key-hmac: vos informations d’identification EAB (KID et HMAC) qui autorisent votre compte auprès de l’AC.
  • set acme-email: utilisé pour les notifications de renouvellement et le contact avec l’autorité de certification.
  • set acme-domain: le domaine que FortiGate validera et sécurisera.
  • set acme-auth-url: l’emplacement HTTP où l’autorité de certification place et vérifie le défi ACME.
  • set auto-regenerate et auto-regenerate-days: activer le renouvellement automatique avant expiration.

Étape 3 : Vérifier le chemin de validation

Votre FortiGate doit répondre à http://vpn.example.com/.well-known/acme-challenge/.

Si la redirection HTTPS est activée, ajoutez une règle de contournement pour que le chemin d’accès reste en HTTP normal pendant la validation.

Voici comment procéder pour les serveurs virtuels :

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

Remplacez <your-public-ip> et 192.168.1.99 par vos adresses IP externes et internes réelles. Ces valeurs sont des caractères de remplacement utilisés uniquement à titre d’exemple.


Étape 4 : Déclencher la demande initiale

Maintenant que FortiGate sait comment atteindre votre autorité de certification et où placer les fichiers de validation, vous pouvez lancer le processus d’inscription des certificats :

execute vpn certificate local generate "acme-vpn-cert"

Cette commande indique au FortiGate de contacter l’autorité de certification, d’effectuer la validation du domaine et de récupérer automatiquement le certificat signé.


Étape 5 : Vérifier l’état du certificat

Pour vérifier l’état de votre certificat, exécutez la commande suivante :

get vpn certificate local

Vous devriez voir :

Status: valid
Issuer: Your CA Name

Si l’état reste en suspens ou invalide, vérifiez à nouveau l’accessibilité du DNS et du port 80.


Étape 6 : Appliquer le certificat

Utilisez l’interface graphique ou le CLI pour l’affecter au VPN SSL, à la gestion HTTPS ou aux services de proxy :

config vpn ssl settings
    set servercert "acme-vpn-cert"
end

Voici comment procéder via l’interface graphique :

Allez sur VPN > SSL-VPN Settings > Server Certificate > Select acme-vpn-cert.


Étape 7 : Dépannage et renouvellement

Si le certificat n’est pas délivré immédiatement, les raisons les plus courantes sont les suivantes :

  • Le serveur ACME n’a pas pu atteindre votre URL de validation (port ouvert 80).
  • Votre KID ou votre clé HMAC ne correspond pas à ce que l’autorité de certification attend.
  • Vous avez atteint une limite temporaire de rediffusion ou de débit ; réessayez après quelques minutes.

Une fois que le certificat est valide, FortiGate gère automatiquement les renouvellements en fonction de votre paramètre auto-regenerate-days. Vous pouvez tester le renouvellement à tout moment avec :

execute vpn certificate local renew "acme-vpn-cert"

Fallback : Délivrance externe (ACME.sh) et importation dans le FortiGate

Si le point de terminaison ACME de votre autorité de certification ne fonctionne pas directement avec le FortiGate, vous pouvez émettre le certificat en externe avec ACME.sh et l’importer. Voici comment procéder :

Étape 1 : Installer ACME.sh

Exécutez ces commandes sur n’importe quel système Linux, macOS ou BSD disposant d’un accès à Internet. Vous n’exécutez pas ces commandes sur le FortiGate lui-même (le FortiGate ne prend pas en charge les scripts shell personnalisés).

curl https://get.acme.sh | sh
source ~/.bashrc

Ceci installe le client acme.sh dans votre répertoire personnel et le charge dans votre shell. Remplacez l’espace réservé par votre autorité de certification et vos coordonnées.

Étape 2 : Enregistrez votre compte ACME auprès de l’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]

Étape 3 : Délivrer le certificat

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"

Étape 4 : Localiser les fichiers de certificats

Après une émission réussie, vos fichiers de certificat sont stockés dans votre répertoire personnel sous ~/.acme.sh/vpn.example.com/

À l’intérieur de ce dossier, vous trouverez

  • fullchain.cer – la chaîne de certificats complète
  • vpn.example.com.key – votre clé privée
  • ca.cer – le certificat intermédiaire de l’autorité de certification

Vous pouvez les ouvrir avec un éditeur de texte ou vérifier les détails via OpenSSL :

openssl x509 -in fullchain.cer -noout -dates -issuer -subject

Étape 5 : Importer vers le FortiGate

Vous pouvez importer le certificat via l’interface graphique :

Allez sur : Système > Certificats > Importer > Certificat local et
télécharger le certificat et la clé privée.

Vous pouvez également utiliser le CLI :

config vpn certificate local
    edit "acme-vpn-cert"
        set private-key "-----BEGIN PRIVATE KEY-----..."
        set certificate "-----BEGIN CERTIFICATE-----..."
    next
end

Étape 6 : Attribution et renouvellement

Une fois le certificat renouvelé, veillez à le réaffecter à votre VPN SSL ou à l’interface web du FortiGate (s’il ne s’applique pas automatiquement). Si vous utilisez un client ACME externe sur un autre serveur, configurez une tâche planifiée (comme un travail cron) pour copier automatiquement les nouveaux fichiers de certificat sur le FortiGate, en utilisant SCP ou un appel API.

Exemple :

scp ~/.acme.sh/vpn.example.com/fullchain.cer admin@fortigate:/root/
scp ~/.acme.sh/vpn.example.com/vpn.example.com.key admin@fortigate:/root/

Rechargez ensuite le certificat :

execute vpn certificate local import "acme-vpn-cert"

Questions courantes

Si vous configurez ACME avec un AC commercial pour la première fois, quelques questions se posent souvent. Voici des réponses rapides à celles que nous rencontrons le plus souvent :

Puis-je utiliser cette configuration avec un AC commercial ?

Oui, à condition que votre fournisseur prenne en charge ACME + External Account Binding (EAB). Les principales autorités de certification, telles que Sectigo et DigiCert, fournissent déjà des URL d’annuaire ACME et des informations d’identification EAB.

Dois-je ouvrir les ports HTTP et HTTPS pour la validation ?

Seul le port 80 (HTTP) est nécessaire pour la validation HTTP-01 de l’ACME. Laissez HTTPS (443) ouvert pour le trafic normal, mais ne redirigez pas les demandes de validation de HTTP vers HTTPS.

Que se passe-t-il si mon certificat n’est pas renouvelé automatiquement ?

Vous pouvez déclencher un renouvellement manuel à tout moment avec :

execute vpn certificate local renew "acme-vpn-cert"

Si l’échec persiste, vérifiez à nouveau vos informations d’identification EAB, le DNS du domaine et que le pare-feu autorise toujours l’accès sortant au point de terminaison ACME de votre autorité de certification.

Puis-je utiliser les mêmes informations d’identification EAB sur plusieurs FortiGates ?

Cela dépend de votre autorité de certification. Certaines autorisent la réutilisation d’un compte pour plusieurs appareils, d’autres délivrent des identifiants uniques par commande ou domaine. Respectez toujours la politique de votre autorité de certification pour éviter les limites de taux ou les conflits de comptes.


Derniers mots

Vous savez maintenant comment installer un certificat SSL ACME sur FortiGate, soit par son intégration native EAB, soit par émission externe via ACME.sh.

Les deux méthodes répondent aux normes de sécurité des entreprises et permettent des renouvellements entièrement automatisés avec les autorités de certification commerciales.

Economisez 10% sur les certificats SSL en commandant aujourd’hui!

Émission rapide, cryptage puissant, confiance de 99,99 % du navigateur, assistance dédiée et garantie de remboursement de 25 jours. Code de coupon: SAVE10

Image détaillée d'un dragon en vol
Rédigé par

Rédacteur de contenu expérimenté spécialisé dans les certificats SSL. Transformer des sujets complexes liés à la cybersécurité en un contenu clair et attrayant. Contribuer à l'amélioration de la sécurité numérique par des récits percutants.