> For the complete documentation index, see [llms.txt](https://docs.stoik.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.stoik.io/cyber-best-practices/fr/durcissez-votre-environnement/implement-certificates/certificate-based-mfa-on-fortigate.md).

# Authentification multifacteur basée sur les certificats sur Fortigate

## Objectif

Exiger un certificat utilisateur valide pour les utilisateurs SSL-VPN d’un groupe AD spécifique.

## Prérequis

* Avoir déjà déployé des certificats à vos utilisateurs via ADCS. Si ce n’est pas le cas, suivez [Déploiement des certificats utilisateur dans Active Directory](broken://pages/9e5dc060ec4d318077b0e9b489903a228005f58e).
* Avoir configuré l’authentification LDAP en fonction de votre Active Directory.

{% hint style="info" %}
Si vous gérez FortiGate via FortiManager, les étapes et emplacements peuvent différer. Demandez à un ingénieur le déroulé FortiManager.
{% endhint %}

{% stepper %}
{% step %}

#### Exportez votre certificat racine CA ADCS (clé publique uniquement)

Exportez le **public** certificat de votre CA racine ADCS depuis n’importe quel poste de travail du domaine.

Trouvez-le dans **Certificats - Utilisateur actuel → Autorités de certification racines de confiance**.

Exportez-le au format `.cer` / certificat Base-64 (sans clé privée).

![](/files/61371397203ce5b774af236c760e72e30c58bfe0)
{% endstep %}

{% step %}

#### Importez la CA racine dans FortiGate

Importez votre certificat racine CA dans **Système → Certificats → Créer/Importer → Certificat CA**.

![](/files/9951f9e14db89bc1d2226dcd84bc09573efbc6f2)

![](/files/fc21e2f669c63a871bced652e7469c65e6871a53)

Pour plus de clarté, nous recommandons de renommer le certificat importé (par défaut nommé Ca\_Cert\_X où X est un chiffre) afin de lui donner un nom plus explicite. Pour ce faire, ouvrez l’interface en ligne de commande FortiGate et saisissez les commandes suivantes :

```shell
config vpn certificate ca
rename Ca_Cert_X en ADCS_Cert
```

Le certificat devrait alors apparaître sous son nouveau nom.

![](/files/6f4632c3c601dcae70ab6c06f791061e529f8a31)
{% endstep %}

{% step %}

#### Créez un user peer (PKI) qui lie le certificat à LDAP

Vous ferez référence à ce user peer depuis votre règle d’authentification SSL-VPN.

Remplacez :

* `ADCS_Cert` par le nom de votre CA importée (le renommage ci-dessus).
* `<LDAP_SERVER_NAME>` par le nom de l’objet serveur LDAP FortiGate depuis **Utilisateur et authentification → Serveurs LDAP**.

{% tabs %}
{% tab title="FortiOS < 7.x" %}

```shell
config user peer
    edit pki01
        set ca ADCS_Cert
        set ldap-server <LDAP_SERVER_NAME>
        set ldap-mode principal-name
    next
end
```

{% endtab %}

{% tab title="FortiOS 7.x+" %}

```shell
config user peer
    edit pki01
        set ca ADCS_Cert
        set mfa-mode subject-identity
        set mfa-server <LDAP_SERVER_NAME>
    next
end
```

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

#### Créez un groupe AD pour les utilisateurs de certificats

Pour faciliter le déploiement du MFA auprès de vos employés, nous recommandons de créer un nouveau groupe Active Directory. Cela vous permettra de migrer progressivement les utilisateurs du groupe « VPN sans certificat » vers le groupe « VPN avec certificat ». Créez ce nouveau groupe dans votre domaine Active Directory à l’aide de l’ **« Active Directory Users and Computers »** outil. Dans l’exemple ci-dessous, nous l’avons nommé **« NOMADE\_CERT »**:

![](/files/6cb24d7c03977d1ff586b5b55a436c855f74e007)

![](/files/112fe3788365e86ced36ca08e6c5c4750de6ed59)
{% endstep %}

{% step %}

#### Créez le groupe d’utilisateurs FortiGate associé au groupe AD

Créez un nouveau **groupe d’utilisateurs** sous **Utilisateur et authentification → Groupes d’utilisateurs**.

Définissez :

* **Serveur distant** = votre objet LDAP
* **Nom du groupe** = `NOMADE_CERT` (ou le groupe AD de votre choix)

![](/files/440bb9f72a44fde871c24f6dde17e721d1af948b)

![](/files/c0b45bfdd8290fcc9ce602a6e874c3c546dad086)
{% endstep %}

{% step %}

#### Associez le groupe d’utilisateurs à votre portail SSL-VPN

Dans **Paramètres SSL-VPN**, associez le nouveau groupe au portail souhaité.

![](/files/bf0c8fc5a3cfd9db8119a2cc99471a073fe06dac)

Ouvrez de nouveau la CLI FortiGate et saisissez la commande suivante :

```shell
conf vpn ssl settings
conf authentication-rule
show
```

La liste des associations existantes devrait alors s’afficher, comme dans l’exemple ci-dessous :

![](/files/c603bb7967ffcfd0622fb56a5d1d864d32a9a09c)

Vous devez maintenant identifier l’association nouvellement créée. Dans cet exemple, il s’agit du numéro 4, associé au groupe `NOMADE_CERT`.

Saisissez les commandes suivantes (remplacez `4` par l’ID de votre association) :

```shell
edit 4
set client-cert enable
set user-peer pki01
end
show
```

Vous devriez alors voir la liste mise à jour des associations :

![](/files/b721549056e5583470a6d6bbc9576d31c0d379b0)

Les utilisateurs du domaine AD qui appartiennent à `NOMADE_CERT` doivent désormais présenter un certificat utilisateur valide pour se connecter.
{% endstep %}

{% step %}

#### Test depuis FortiClient

Sur un poste de travail joint au domaine, mettez à jour le profil VPN FortiClient :

![](/files/553481c41b9d89eae9a390056a682a18d0edb421)

Sélectionnez le certificat associé à votre utilisateur (ici « stoik\_test ») dans le **champ « Client Certificate »**  :

![](/files/f840889f7295ecbe701ae2819e516aee351fa3d8)
{% endstep %}
{% endstepper %}

## Dépannage des problèmes d’authentification

Les commandes suivantes vous permettront d’afficher les journaux de débogage pour LDAP et les processus d’authentification en général (les commandes doivent être saisies dans la CLI FortiGate, et la session doit rester ouverte) :

```shell
diagnose debug enable
diagnose debug application fnbamd -1
diagnose debug application authd -1
diagnose debug application ldap -1
```

Si les commandes ci-dessus ne permettent pas d’identifier le problème (informations incorrectes dans le certificat, serveur LDAP injoignable, etc.), il peut être utile d’activer le journal de débogage SSL VPN :

```shell
diagnose debug app sslvpn -1
diagnose vpn ssl debug-filter src-addr4 XXX.XXX.XXX.XXX
```

Pour limiter la quantité de journaux affichés, remplacez XXX.XXX.XXX.XXX ci-dessus par l’adresse IP source initiant la connexion VPN.

Une fois le débogage terminé, vous devez désactiver le mode de débogage :

```shell
diagnose debug disable
diagnose debug reset
```

Veuillez noter que cette procédure peut être quelque peu complexe, car elle nécessite d’être simultanément connecté au FortiGate et de pouvoir lancer FortiClient. N’hésitez pas à contacter nos experts si nécessaire.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.stoik.io/cyber-best-practices/fr/durcissez-votre-environnement/implement-certificates/certificate-based-mfa-on-fortigate.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
