Fortigate, autenticación mediante certificados (VPN IPSEC)

Para autenticar usuarios VPN IPSEC (con el cliente fortigate) tienes varias opciones…Usuarios locales con pre-shared key. Usuarios de un LDAP/AD con pre-shared key y autenticacion con certificados.

Para hacer que se autentiquen se necesita:

– Un certificado para el firewall.
– Un certificado para el cliente fortigate.

El certificado se lo puedes pedir a alguna entidad (pagandola) o lo puedes crear tu en una maquina que tenga openssl.

Para crear un certificado necesitamos una CA que lo firme… así que vamos a crear primero nuestra CA.

Generamos nuestra clave privada

openssl genrsa -des3 -out clave_privada.key 2048

Apuntamos la contraseña, porque la va a pedir cada vez que generemos un nuevo certificado.

Ahora generamos un certificado con esa clave que luego importaremos en el firewall.

openssl req -new -x509 -days 3650 -extensions v3_ca -key clave_privada.key -out mi_certificado.crt

Ahora que tenemos nuestro certificado, lo podemos importar en el firewall System->Certificates->Local Certificate->Import

Type: certificate
El fichero con el certificado «mi_certificado.crt», el fichero con la key «clave_privada.key»

Una vez que lo tienes instalado repetimos la operación para generar un certificado para el usuario con el que vamos a probar.

openssl req -new -x509 -days 3650 -extensions v3_ca -key clave_privada.key -out mi_certificado_de_usuario.crt

Suponemos que ya tenemos configurada una vpn, si es asi solo hay que cambiar el tipo de autenticación de pre-shared key a RSA-Signature y seleccionar nuestro certificado.

En el cliente fortigate tenemos que importar nuestro certificado (mi_certificado_de_usuario.crt). VPN->My certificates->Import)
En el cliente fortigate igual, cambiamos el tipo de autenticación a X509 y seleccionamos el certificado.

Con esto debería de ser suficiente, ahora puedes empezar a generar certificados como si fueran churros para todos tus usuarios.

Personalmente no acaba de convencerme este tipo de autenticación, prefiero tener controlados a los usuarios y que tengan que teclear una contraseña (que les genero yo).