En este artículo se explica como realizar la instalación desatendida de FortiClient VPN junto a un perfil VPN para que el usuario final ya lo tenga todo configurado.
Descarga del instalador
Para realizar este tipo de instalación es necesario obtener el instalador completo (ya sea en formato *.exe
o, mucho mejor aún, en formato *.msi
):
- Navegar a la página de descargas de Fortinet
- Buscar la sección FortiClient → FortiClient VPN only
- Descargar el instalador para Windows
- Guardarlo en un directorio temporal (p.ej.
C:\FortiClientSetup
)
Este fichero descargado es realmente un stub que se conecta a los servidores de Fortinet para descargar la imagen del verdadero instalador:
- Ejecutar
FortiClientVPNOnlineInstaller.exe
- Esperar a que aparezca la pantalla del asistente Welcome to the FortiClient VPN Setup Wizard
- Sin cerrar esta ventana ni avanzar en la instalación, acceder a la carpeta
%TEMP%
donde se encontrará:- El fichero
FortiClientVPN.exe
- Un directorio con un GUID aleatorio (p.ej.
{32123CA3-C24D-4A99-9347-70049B8E4C23}
) y dentro el ficheroFortiClientVPN.msi
- El fichero
- Copiar estos dos ficheros al directorio temporal
- Cerrar el asistente de instalación
El contenido del directorio temporal será similar al siguiente:
09/28/2022 10:26 PM 130,755,136 FortiClientVPN.exe
09/28/2022 10:26 PM 116,649,984 FortiClientVPN.msi
09/23/2022 05:15 PM 3,217,072 FortiClientVPNOnlineInstaller.exe
Instalación mediante EXE
A continuación se podría crear un script que instalase el cliente de forma desatendida mediante alguno de los siguientes comandos:
# Instalación completamente silenciosa, sin interacción del usuario
FortiClientVPN.exe /quiet /norestart /log "C:\Logs\FortiClient.log"
# Instalación desatendida, con una barra de progreso
FortiClientVPN.exe /passive /norestart /log "C:\Logs\FortiClient.log"
Ahora bien, este método requeriría realizar algunas acciones a posteriori para personalizar la instalación:
- Borrar el acceso directo que se crea en el escritorio común (
CommonDesktop
=C:\Users\Public\Desktop
) - Añadir el perfil VPN para que el usuario final ya lo tenga todo configurado
Perfil VPN
Para crear el perfil VPN durante la instalación desatendida hay que saber que, en el caso de FortiClient VPN, esta configuración se guarda en el registro de Windows.
Por tanto, hay que averiguar qué cambios se producen en el registro cuando se crea una configuración de forma manual y guardarlos en un fichero *.reg
que se importará durante la instalación desatendida.
Un método bastante sencillo para conocer los cambios es el siguiente:
- Exportar el registro de máquina:
reg.exe export HKLM\SOFTWARE\Fortinet hklm1.reg
- Exportar el registro de usuario:
reg.exe export HKCU\SOFTWARE\Fortinet hkcu1.reg
- Ejecutar el programa y realizar los cambios que se consideren oportunos, en este caso:
- Aceptar el disclaimer acerca de utilizar una versión gratuita y sin soporte de FortiClient VPN
- Configurar la conexión VPN que se necesite, por ejemplo:
- VPN:
SSL-VPN
- Connection Name:
VPN Custom
- Description:
VPN Custom
- Remote Gateway:
<FQDN>
del servidor (p.ej.vpn.contoso.com
) - Enable Single Sign On (SSO) for VPN Tunnel:
Habilitar
- VPN:
- Cerrar el programa
- Exportar el registro de máquina:
reg.exe export HKLM\SOFTWARE\Fortinet hklm2.reg
- Exportar el registro de usuario:
reg.exe export HKCU\SOFTWARE\Fortinet hkcu2.reg
- Comparar cada pareja de ficheros (por ejemplo mediante WinMerge):
WinMergeU.exe hklm1.reg hklm2.reg
WinMergeU.exe hkcu1.reg hkcu2.reg
Al comparar estos ficheros se observa que se ha añadido la siguiente información en el registro:
[HKEY_LOCAL_MACHINE\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels\VPN Custom]
"Description"="VPN Custom"
"Server"="vpn.contoso.com:443"
"DATA1"="EncLM 9de085fc4f ... (un total de 588 carácteres hexadecimales) ... a28ec1c13a"
"promptusername"=dword:00000000
"promptcertificate"=dword:00000000
"DATA3"=""
"ServerCert"="1"
"sso_enabled"=dword:00000001
"use_external_browser"=dword:00000000
"azure_auto_login"=dword:00000000
[HKEY_CURRENT_USER\SOFTWARE\Fortinet\FortiClient\FA_UI]
[HKEY_CURRENT_USER\SOFTWARE\Fortinet\FortiClient\FA_UI\VPN-7.0.7.0345]
"installed"=dword:630f39a6
[HKEY_CURRENT_USER\SOFTWARE\Fortinet\FortiClient\Sslvpn]
[HKEY_CURRENT_USER\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels]
[HKEY_CURRENT_USER\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels\VPN Custom]
"promptusername"=dword:00000000
"promptcertificate"=dword:00000000
"DATA3"=""
Después de hacer algunas pruebas se consiguen los siguientes ficheros con el contenido mínimo indispensable para que un usuario tenga el perfil VPN ya configurado y pueda conectarse sin problemas:
- Fichero
FortiClient-Custom-HKLM.reg
Windows Registry Editor Version 5.00
; Conexión VPN Custom
[HKEY_LOCAL_MACHINE\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels\VPN Custom]
"Description"="VPN Custom"
"Server"="vpn.contoso.com:443"
"promptusername"=dword:00000000
"promptcertificate"=dword:00000000
"ServerCert"="1"
"sso_enabled"=dword:00000001
"use_external_browser"=dword:00000000
"azure_auto_login"=dword:00000000
- Fichero
FortiClient-Custom-HKCU.reg
Windows Registry Editor Version 5.00
; Aceptar el Disclaimer sobre la versión gratuita
[HKEY_CURRENT_USER\software\fortinet\FortiClient\FA_UI\VPN-7.0.7.0345]
"installed"=dword:630f39a6
; Conexión VPN Custom
[HKEY_CURRENT_USER\software\fortinet\FortiClient\Sslvpn\Tunnels\VPN Custom]
"promptusername"=dword:00000000
"promptcertificate"=dword:00000000
Estos ficheros se deberían instalar para todos los perfiles de usuario existentes y futuros del ordenador. Esto se puede conseguir usando el script WriteToHKCUFromSystem.ps1 que se encarga de introducir la información en cada uno de los SID en HKEY_USERS\$sid
y en C:\Users\Default\NTUSER.DAT
(el registro del usuario por defecto).
Transformación del MSI
Aunque el método anterior permite instalar FortiClient VPN de forma desatendida y con un perfil personalizado, se puede simplificar la instalación transformando el *.msi
.
Aquellos que lleven mucho tiempo administrando Windows recordarán que el método tradicional para generar un fichero *.mst
era utilizar el editor ORCA que, aunque aún sigue siendo válido, tiene una interfaz poco amigable.
Por este motivo, se utilizará la versión Community de Master Packager que es gratuita y permite realizar las operaciones más comunes con los ficheros *.msi
y *.mst
.
- Descargar e instalar Master Packager
- Ejecutar
MasterPackager.exe
- Seleccionar la opción Response Transform y seleccionar el fichero
FortiClientVPN.msi
- Asistente Welcome to the FortiClient VPN Setup Wizard
- Marcar la casilla para aceptar el License Agreement
- Pulsar sobre el botón
Next
- Pulsar sobre el botón
Install
- Pulsar sobre el botón
Finish
- Se crea el fichero de transformación
FortiClientVPN.mst
- Asistente Welcome to the FortiClient VPN Setup Wizard
- Seleccionar View → Advanced Editor - Overview
- Ir a la sección Property y pulsar sobre el lapiz para editar
- Buscar la propiedad
DESKTOPSHORTCUT
y cambiar el valor a 0 (evita la creación de accesos directos en el escritorio)
- Buscar la propiedad
- Ir a la sección Custom Actions y pulsar sobre el lapiz para editar
- Seleccionar Predefined Actions
- Agregar una nueva acción predefinida pulsando sobre
[+]
- Seleccionar Apply HKCU registries to all users
- Explorar y seleccionar el fichero
FortiClient-Custom-HKCU.reg
- Explorar y seleccionar el fichero
- Seleccionar Apply HKCU registries to all users
- Ir a la sección Registries
- Seleccionar la rama
HKEY_LOCAL_MACHINE
- Seleccionar la opción Import Registry con el botón derecho
- Explorar y seleccionar el fichero
FortiClient-Custom-HKLM.reg
- Comprobar que se han añadido las claves en
HKEY_LOCAL_MACHINE\Software\Fortinet\FortiClient\Sslvpn\Tunnels\VPN Custom
- Explorar y seleccionar el fichero
- Seleccionar la rama
- Grabar el fichero de transformación mediante File → Save
- Salir del programa y renombrar el fichero de transformación a
FortiClientVPN-Custom.mst
Update: si se deja el fichero *.mst
así, las claves de registro que se han añadido en HKLM
se crearán bajo HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node
. Hay que forzar el componente añadido para que sea de 64-bits de la siguiente manera:
- Seleccionar View → Table Editor
- Ir a la tabla Registry
- Buscar el nombre del componente que se ha creado al añadir las claves de registro (p.ej
HKLM_C
) - Ir a la tabla Component y buscar el componente anterior
- Modificar los atributos:
4
→260
Instalación mediante MSI
A continuación se podría crear un script que instalase el cliente de forma desatendida mediante alguno de los siguientes comandos:
# Instalación completamente silenciosa, sin interacción del usuario
msiexec.exe /i FortiClientVPN.msi TRANSFORMS=FortiClientVPN-Custom.mst REBOOT=ReallySuppress /quiet
# Instalación desatendida, con una barra de progreso
msiexec.exe /i FortiClientVPN.msi TRANSFORMS=FortiClientVPN-Custom.mst REBOOT=ReallySuppress /passive
Depuración de MSI
Se puede activar la depuración de MSI para forzar la creación de un fichero de registro en la carpeta %TEMP%
:
- Para ver si el instalador EXE inició una instalación de MSI
- Para comprobar si hay errores
- Para comprobar las propiedades modificadas durante la instalación de MSI
- Para omitir agregar el interruptor /l*v a todas las instalaciones de MSI
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]
"Logging"="voicewarmupx"