> 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/es/refuerza-tu-entorno/implement-certificates/certificate-based-mfa-on-fortigate.md).

# MFA basada en certificados en Fortigate

## Objetivo

Requerir un certificado de usuario válido para los usuarios de SSL-VPN en un grupo AD específico.

## Prerrequisitos

* Ya ha desplegado certificados a sus usuarios a través de ADCS. Si no, siga [Implementación de certificados de usuario dentro de Active Directory](broken://pages/c11bb327e5fa681e4296dc7550831271d1d30a09).
* Ha configurado la autenticación LDAP basada en su Active Directory.

{% hint style="info" %}
Si administra FortiGate a través de FortiManager, los pasos y las ubicaciones pueden diferir. Consulte a un ingeniero sobre el flujo de FortiManager.
{% endhint %}

{% stepper %}
{% step %}

#### Exporte el certificado de su CA raíz de ADCS (solo clave pública)

Exporte el **público** certificado de su CA raíz de ADCS desde cualquier estación de trabajo del dominio.

Encuéntrelo en **Certificados - Usuario actual → Entidades de certificación raíz de confianza**.

Exporte como un `.cer` / certificado Base-64 (sin clave privada).

![](/files/790a45cc5a7bc35cefeb6e38eab9e0f24b0cdce3)
{% endstep %}

{% step %}

#### Importe la CA raíz en FortiGate

Importe su certificado raíz de CA en **Sistema → Certificados → Crear/Importar → Certificado CA**.

![](/files/44d90947b26e17a4deda45d05f86959a523dee12)

![](/files/503b2e6168da79d69fe4c7b83454512d17aa1056)

Para mayor claridad, recomendamos cambiar el nombre del certificado importado (de forma predeterminada llamado Ca\_Cert\_X, donde X es un número) a un nombre más significativo. Para ello, abra la interfaz de línea de comandos de FortiGate e introduzca los siguientes comandos:

```shell
config vpn certificate ca
renombre Ca_Cert_X a ADCS_Cert
```

Entonces el certificado debería aparecer con su nuevo nombre.

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

{% step %}

#### Cree un par de usuario (PKI) que vincule el certificado a LDAP

Harás referencia a este par de usuario desde tu regla de autenticación SSL-VPN.

Reemplace:

* `ADCS_Cert` con el nombre de su CA importada (el cambio de nombre anterior).
* `<LDAP_SERVER_NAME>` con el nombre del objeto del servidor LDAP de FortiGate en **Usuario y autenticación → Servidores 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 %}

#### Cree un grupo de AD para usuarios de certificados

Para facilitar la implementación de MFA entre sus empleados, recomendamos crear un nuevo grupo de Active Directory. Esto le permitirá migrar gradualmente a los usuarios del grupo "VPN sin certificado" al grupo "VPN con certificado". Cree este nuevo grupo en su dominio de Active Directory utilizando la **herramienta "Usuarios y equipos de Active Directory"** . En el ejemplo siguiente, lo llamamos **"NOMADE\_CERT"**:

![](/files/74adc751c83b06238f9a5fc00b0cabb67688c99e)

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

{% step %}

#### Cree el grupo de usuarios de FortiGate asignado al grupo de AD

Cree un nuevo **Grupo de usuarios** en **Usuario y autenticación → Grupos de usuarios**.

Establezca:

* **Servidor remoto** = su objeto LDAP
* **Nombre del grupo** = `NOMADE_CERT` (o el grupo de AD que haya elegido)

![](/files/8c695da77768dbda744fdd5286845e828fc16172)

![](/files/4a5dc498970cf78455de09aec68ed763f41732a6)
{% endstep %}

{% step %}

#### Asigne el grupo de usuarios a su portal SSL-VPN

En **Configuración de SSL-VPN**, asigne el nuevo grupo al portal que desee.

![](/files/70179993093bf79a275fdd26bffeff301920220c)

Abra de nuevo la CLI de FortiGate e introduzca el siguiente comando:

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

Entonces debería mostrarse la lista de asignaciones existentes, como en el siguiente ejemplo:

![](/files/e16a8f77ee37fd076a260c3760b7d438d0ed46ca)

Ahora debe identificar la asignación recién creada. En este ejemplo, es el número 4, asociado al grupo `NOMADE_CERT`.

Introduzca los siguientes comandos (reemplace `4` con su ID de asignación):

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

Entonces debería ver la lista actualizada de asignaciones:

![](/files/7bf1aeb8e2d406de8604ea04e8e7bbea10c00fa7)

Los usuarios del dominio AD que pertenecen a `NOMADE_CERT` ahora deben presentar un certificado de usuario válido para conectarse.
{% endstep %}

{% step %}

#### Prueba desde FortiClient

En una estación de trabajo unida al dominio, actualice el perfil VPN de FortiClient:

![](/files/b2f49b144250e248d9e1c57971c6eb6b617cee31)

Seleccione el certificado asociado a su usuario (aquí "stoik\_test") en el **"Certificado de cliente"** campo:

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

## Solución de problemas de autenticación

Los siguientes comandos le permitirán ver registros de depuración para LDAP y los procesos de autenticación en general (los comandos deben introducirse en la CLI de FortiGate y la sesión debe permanecer abierta):

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

Si los comandos anteriores no ayudan a identificar el problema (información incorrecta en el certificado, servidor LDAP inaccesible, etc.), puede ser útil habilitar el registro de depuración de SSL VPN:

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

Para limitar la cantidad de registros mostrados, reemplace XXX.XXX.XXX.XXX arriba por la dirección IP de origen que inicia la conexión VPN.

Una vez finalizada la depuración, debe desactivar el modo de depuración:

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

Tenga en cuenta que este procedimiento puede ser algo complejo, ya que requiere estar conectado simultáneamente a FortiGate y poder iniciar FortiClient. No dude en contactar con nuestros expertos si es necesario.


---

# 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/es/refuerza-tu-entorno/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.
