> 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/nl/verhard-uw-omgeving/implement-certificates/certificate-based-mfa-on-fortigate.md).

# Certificaatgebaseerde MFA op Fortigate

## Doel

Een geldig gebruikerscertificaat vereisen voor SSL-VPN-gebruikers in een specifieke AD-groep.

## Voorwaarden

* Heb al certificaten via ADCS aan uw gebruikers uitgerold. Als dat niet zo is, volg [Gebruikerscertificaten uitrollen binnen Active Directory](broken://pages/a99d9a1a8bc8e9e3d45a695767b5be6c8df96293).
* Heb LDAP-authenticatie geconfigureerd op basis van uw Active Directory.

{% hint style="info" %}
Als u FortiGate beheert via FortiManager, kunnen de stappen en locaties verschillen. Vraag een engineer naar de FortiManager-flow.
{% endhint %}

{% stepper %}
{% step %}

#### Exporteer uw ADCS root CA-certificaat (alleen openbare sleutel)

Exporteer het **openbare** certificaat van uw ADCS root CA vanaf elke domeinwerkstation.

Vind het in **Certificaten - Huidige gebruiker → Vertrouwde hoofd-certificeringsinstanties**.

Exporteer het als een `.cer` / Base-64-certificaat (geen privésleutel).

![](/files/68604e52b3539062ae21e522a5353261e0e23e4c)
{% endstep %}

{% step %}

#### Importeer de root CA in FortiGate

Importeer uw root CA-certificaat in **Systeem → Certificaten → Maken/Importeren → CA-certificaat**.

![](/files/d776fad38954754fa7ea1ba8a9a596da6a0f89c3)

![](/files/690fe2d6ef443f65b1d70d8d7ebadabe750f6f9c)

Voor de duidelijkheid raden we aan het geïmporteerde certificaat een andere naam te geven (standaard genaamd Ca\_Cert\_X waarbij X een nummer is) zodat het een meer betekenisvolle naam krijgt. Open hiervoor de opdrachtregelinterface van FortiGate en voer de volgende opdrachten in:

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

Het certificaat zou dan onder zijn nieuwe naam moeten verschijnen.

![](/files/0fca5ca8fe741a396b84630755a6808aa4357c92)
{% endstep %}

{% step %}

#### Maak een user peer (PKI) aan die het certificaat aan LDAP koppelt

U verwijst naar deze user peer vanuit uw SSL-VPN-authenticatieregel.

Vervang:

* `ADCS_Cert` door de naam van uw geïmporteerde CA (de hernoeming hierboven).
* `<LDAP_SERVER_NAME>` door de naam van het FortiGate LDAP-serverobject uit **Gebruikers & Authenticatie → LDAP-servers**.

{% 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 %}

#### Maak een AD-groep voor certificaatgebruikers aan

Om de uitrol van MFA onder uw medewerkers te vergemakkelijken, raden we aan een nieuwe Active Directory-groep aan te maken. Hiermee kunt u gebruikers geleidelijk migreren van de groep "VPN zonder certificaat" naar de groep "VPN met certificaat". Maak deze nieuwe groep in uw Active Directory-domein aan met de **"Active Directory-gebruikers en computers"** tool. In het onderstaande voorbeeld hebben we deze genoemd **"NOMADE\_CERT"**:

![](/files/800e14913ef60edaf4394421ff10f94ecbb2d34c)

![](/files/6865ef8471d4eba58b137bff5fc0de11b173fa63)
{% endstep %}

{% step %}

#### Maak de FortiGate-gebruikersgroep aan die aan de AD-groep is gekoppeld

Maak een nieuwe **Gebruikersgroep** onder **Gebruikers & Authenticatie → Gebruikersgroepen**.

Stel in:

* **Externe server** = uw LDAP-object
* **Groepsnaam** = `NOMADE_CERT` (of uw gekozen AD-groep)

![](/files/6178498372f95b6fd8018f4c4131ed2c59f603a4)

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

{% step %}

#### Koppel de gebruikersgroep aan uw SSL-VPN-portaal

In **SSL-VPN-instellingen**, koppel de nieuwe groep aan het gewenste portaal.

![](/files/4eff3b804e247b60fb324351f830265cf771ec37)

Open de FortiGate-CLI opnieuw en voer het volgende commando in:

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

De lijst met bestaande koppelingen zou dan moeten worden weergegeven, zoals in het onderstaande voorbeeld:

![](/files/63426cd7411c3e2f56efda5eaa8e6a57c5f12af3)

U moet nu de nieuw aangemaakte koppeling identificeren. In dit voorbeeld is dat nummer 4, gekoppeld aan de groep `NOMADE_CERT`.

Voer de volgende opdrachten in (vervang `4` door uw koppelings-ID):

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

Daarna zou u de bijgewerkte lijst met koppelingen moeten zien:

![](/files/a664725f98115e2ab4ea1748c299436dc5d31851)

Gebruikers in het AD-domein die behoren tot `NOMADE_CERT` moeten nu een geldig gebruikerscertificaat presenteren om verbinding te maken.
{% endstep %}

{% step %}

#### Test vanuit FortiClient

Werk op een werkstation dat lid is van het domein het FortiClient VPN-profiel bij:

![](/files/9742d8afba45efe27a9c0646e90e0d7d5104acb8)

Selecteer het certificaat dat aan uw gebruiker is gekoppeld (hier "stoik\_test") in het **"Client-certificaat"** veld:

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

## Problemen met authenticatie oplossen

Met de volgende opdrachten kunt u debuglogs bekijken voor LDAP en authenticatieprocessen in het algemeen (de opdrachten moeten worden ingevoerd in de FortiGate-CLI en de sessie moet open blijven):

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

Als de bovenstaande opdrachten niet helpen om het probleem te identificeren (onjuiste informatie in het certificaat, LDAP-server niet bereikbaar, enz.), kan het nuttig zijn om SSL VPN-debuglogging in te schakelen:

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

Om de hoeveelheid weergegeven logs te beperken, vervangt u hierboven XXX.XXX.XXX.XXX door het bron-IP-adres dat de VPN-verbinding initieert.

Zodra het debuggen is voltooid, moet u de debugmodus uitschakelen:

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

Let op: deze procedure kan enigszins complex zijn, omdat u tegelijkertijd verbonden moet zijn met de FortiGate en FortiClient moet kunnen starten. Aarzel niet om indien nodig contact op te nemen met onze experts.


---

# 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/nl/verhard-uw-omgeving/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.
