> 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/de/harten-sie-ihre-umgebung-ab/implement-certificates/certificate-based-mfa-on-fortigate.md).

# Zertifikatsbasierte MFA auf FortiGate

## Ziel

Für SSL-VPN-Benutzer in einer bestimmten AD-Gruppe ein gültiges Benutzerzertifikat verlangen.

## Voraussetzungen

* Sie haben bereits Zertifikate über ADCS an Ihre Benutzer verteilt. Falls nicht, folgen Sie [Benutzerzertifikate in Active Directory bereitstellen](broken://pages/a46ca5906242f5222634bffc5ca821a3097000c8).
* Sie haben die LDAP-Authentifizierung auf Basis Ihres Active Directory konfiguriert.

{% hint style="info" %}
Wenn Sie FortiGate über FortiManager verwalten, können sich Schritte und Positionen unterscheiden. Fragen Sie einen Ingenieur nach dem FortiManager-Ablauf.
{% endhint %}

{% stepper %}
{% step %}

#### Exportieren Sie Ihr ADCS-Stamm-CA-Zertifikat (nur öffentlicher Schlüssel)

Exportieren Sie das **öffentliche** Zertifikat Ihrer ADCS-Stamm-CA von einem beliebigen Domänen-Computer.

Sie finden es unter **Zertifikate - Aktueller Benutzer → Vertrauenswürdige Stammzertifizierungsstellen**.

Exportieren Sie es als `.cer` / Base-64-Zertifikat (kein privater Schlüssel).

![](/files/80e6af509533da311ac03e618a89c126cecc87d5)
{% endstep %}

{% step %}

#### Importieren Sie die Stamm-CA in FortiGate

Importieren Sie Ihr Stammzertifikat der CA in **System → Zertifikate → Erstellen/Importieren → CA-Zertifikat**.

![](/files/2bfd1444a265da15b89ac2d20d6c984133aaab3d)

![](/files/ae7b5c935550b1092e080e98da04a46a53d908f9)

Zur besseren Übersicht empfehlen wir, das importierte Zertifikat umzubenennen (standardmäßig heißt es Ca\_Cert\_X, wobei X eine Zahl ist), damit es einen aussagekräftigeren Namen erhält. Öffnen Sie dazu die FortiGate-Befehlszeile und geben Sie die folgenden Befehle ein:

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

Das Zertifikat sollte dann unter seinem neuen Namen angezeigt werden.

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

{% step %}

#### Erstellen Sie einen Benutzer-Peer (PKI), der das Zertifikat mit LDAP verknüpft

Auf diesen Benutzer-Peer verweisen Sie in Ihrer SSL-VPN-Authentifizierungsregel.

Ersetzen Sie:

* `ADCS_Cert` durch den Namen Ihrer importierten CA (siehe Umbenennung oben).
* `<LDAP_SERVER_NAME>` durch den Objekt-Namen des FortiGate-LDAP-Servers aus **Benutzer & Authentifizierung → LDAP-Server**.

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

#### Erstellen Sie eine AD-Gruppe für Zertifikatsbenutzer

Um die MFA-Bereitstellung in Ihrem Unternehmen zu erleichtern, empfehlen wir, eine neue Active-Directory-Gruppe zu erstellen. So können Sie Benutzer schrittweise von der Gruppe "VPN ohne Zertifikat" in die Gruppe "VPN mit Zertifikat" migrieren. Erstellen Sie diese neue Gruppe in Ihrer Active-Directory-Domäne mit dem **"Active Directory-Benutzer und -Computer"** Tool. Im folgenden Beispiel haben wir sie **"NOMADE\_CERT"**:

![](/files/b4781a824d86339b204fe098263c9dc9dbbbfa2d)

![](/files/2850b4dc8db0ad2c7a7f7f3fce9333ccf14ad8f0)
{% endstep %}

{% step %}

#### Erstellen Sie die mit der AD-Gruppe verknüpfte FortiGate-Benutzergruppe

Erstellen Sie eine neue **Benutzergruppe** unter **Benutzer & Authentifizierung → Benutzergruppen**.

Setzen Sie:

* **Remote Server** = Ihr LDAP-Objekt
* **Gruppenname** = `NOMADE_CERT` (oder Ihre gewählte AD-Gruppe)

![](/files/bbbed1a920a0400641cb8e8f3fd0c356d1161479)

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

{% step %}

#### Ordnen Sie die Benutzergruppe Ihrem SSL-VPN-Portal zu

In **SSL-VPN-Einstellungen**, ordnen Sie die neue Gruppe dem gewünschten Portal zu.

![](/files/a19795c8a0b76ea2a286d3cb88e9801a06285102)

Öffnen Sie erneut die FortiGate-CLI und geben Sie folgenden Befehl ein:

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

Die Liste der vorhandenen Zuordnungen sollte dann angezeigt werden, wie im folgenden Beispiel:

![](/files/7a7c51c815d2e49a012048aa70cd179fcc0f394a)

Sie müssen nun die neu erstellte Zuordnung identifizieren. In diesem Beispiel ist es Nummer 4, verknüpft mit der Gruppe `NOMADE_CERT`.

Geben Sie die folgenden Befehle ein (ersetzen Sie `4` durch Ihre Zuordnungs-ID):

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

Anschließend sollten Sie die aktualisierte Liste der Zuordnungen sehen:

![](/files/3d2a6afb3c70485cd63c2506b8dd7d49e511cff6)

Benutzer in der AD-Domäne, die zu `NOMADE_CERT` gehören, müssen nun ein gültiges Benutzerzertifikat vorlegen, um eine Verbindung herzustellen.
{% endstep %}

{% step %}

#### Test mit FortiClient

Aktualisieren Sie auf einem der Domäne beigetretenen Arbeitsplatzrechner das FortiClient-VPN-Profil:

![](/files/6078be4e99152d68879167c2c740776ba2c8bf30)

Wählen Sie das mit Ihrem Benutzer verknüpfte Zertifikat (hier "stoik\_test") im **"Client-Zertifikat"** Feld aus:

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

## Fehlerbehebung bei Authentifizierungsproblemen

Mit den folgenden Befehlen können Sie Debug-Protokolle für LDAP- und allgemeine Authentifizierungsprozesse anzeigen (die Befehle müssen in der FortiGate-CLI eingegeben werden, und die Sitzung muss geöffnet bleiben):

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

Falls die obigen Befehle nicht helfen, das Problem zu identifizieren (falsche Informationen im Zertifikat, LDAP-Server nicht erreichbar usw.), kann es sinnvoll sein, das Debug-Logging für SSL-VPN zu aktivieren:

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

Um die Menge der angezeigten Protokolle zu begrenzen, ersetzen Sie oben XXX.XXX.XXX.XXX durch die Quell-IP-Adresse, die die VPN-Verbindung initiiert.

Sobald das Debugging abgeschlossen ist, müssen Sie den Debug-Modus deaktivieren:

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

Bitte beachten Sie, dass dieses Verfahren etwas komplex sein kann, da Sie gleichzeitig mit FortiGate verbunden sein und FortiClient starten können müssen. Zögern Sie nicht, bei Bedarf unsere Experten zu kontaktieren.


---

# 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/de/harten-sie-ihre-umgebung-ab/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.
