Esta guía muestra cómo instalar y automatizar certificados SSL en cortafuegos FortiGate utilizando el protocolo ACME con External Account Binding (EAB), el método estándar que utilizan las autoridades de certificación comerciales para la automatización segura.

Aprenderás dos formas de desplegar:
- Integración nativa FortiGate ACME con credenciales EAB
- Emisión externa con ACME.sh, seguida de importación en FortiGate
Ambos métodos son compatibles con los terminales ACME comerciales que emiten certificados mediante autenticación KID + HMAC.
Antes de empezar
Necesitarás
- FortiGate 7.6.0 o posterior (las versiones anteriores no son compatibles con EAB)
- Acceso root o admin a la CLI de FortiGate
- URL del directorio ACME de tu proveedor de certificados
- Credenciales EAB (ID de la clave + Clave HMAC)
- Un nombre de dominio con registros DNS A/AAAA válidos que apunten a la IP pública de tu FortiGate
- Puerto 80 accesible desde Internet para la validación HTTP-01
Paso 1: Comprueba la versión de tu firmware
Utiliza la Interfaz de Línea de Comandos para comprobar la versión de tu FortiOS:
get system status
Asegúrate de que aparece FortiOS 7.6.0 o posterior. Si no es así, actualízalo primero. Las versiones anteriores no incluyen los campos acme-eab-key-id y acme-eab-key-hmac.
Paso 2: Crear un objeto certificado local para ACME
Ejecute el siguiente comando:
config vpn certificate local
edit "acme-vpn-cert"
set enrollment acme
set acme-ca-url "https://acme.yourca.com/v2/acme"
set acme-eab-key-id "YOUR_EAB_KID"
set acme-eab-key-hmac "YOUR_EAB_HMAC_KEY"
set acme-email "[email protected]"
set acme-domain "vpn.example.com"
set acme-auth-url "http://vpn.example.com/.well-known/acme-challenge"
set auto-regenerate-days 30
set auto-regenerate enable
next
end
Este comando crea un nuevo objeto de certificado local llamado acme-vpn-cert e indica a FortiGate que lo solicite y renueve automáticamente a tu CA comercial mediante el protocolo ACME con External Account Binding.
Explicación de las piezas clave:
set enrollment acme: indica a FortiGate que este certificado se gestionará a través de ACME, no se importará manualmente.set acme-ca-url: el punto final del directorio ACME de tu autoridad de certificación.-
set acme-eab-key-id/set acme-eab-key-hmac: tus credenciales EAB (KID y HMAC) que autorizan tu cuenta con la CA. set acme-email: utilizado para las notificaciones de renovación y el contacto con la AC.set acme-domain: el dominio que FortiGate validará y asegurará.set acme-auth-url: la ubicación HTTP donde la CA coloca y verifica la impugnación ACME.-
set auto-regenerateyauto-regenerate-days: activa la renovación automática antes de que caduque.
Paso 3: Verificar la ruta de validación
Tu FortiGate debe responder a http://vpn.example.com/.well-known/acme-challenge/.
Si tienes activada la redirección HTTPS, añade una regla de bypass para que la ruta del reto permanezca en HTTP plano durante la validación.
He aquí cómo hacerlo para los servidores virtuales:
config firewall vip
edit "acme-http"
set extintf "wan1"
set extip <your-public-ip>
set mappedip "192.168.1.99"
set extport 80
set mappedport 80
set protocol tcp
next
end
Sustituye <your-public-ip> y 192.168.1.99 por tus direcciones IP externa e interna reales. Estos valores se utilizan sólo a modo de ejemplo.
Paso 4: Activar la solicitud inicial
Ahora que FortiGate sabe cómo llegar a tu CA y dónde colocar los archivos de validación, puedes iniciar el proceso real de inscripción de certificados:
execute vpn certificate local generate "acme-vpn-cert"
Este comando indica a FortiGate que se ponga en contacto con la CA, realice la validación del dominio y recupere el certificado firmado automáticamente.
Paso 5: Comprueba el estado del certificado
Para comprobar el estado de tu certificado, ejecuta el siguiente comando:
get vpn certificate local
Deberías verlo:
Status: valid
Issuer: Your CA Name
Si el estado sigue siendo pendiente o inválido, vuelve a comprobar el DNS y la accesibilidad del puerto 80.
Paso 6: Aplicar el certificado
Utiliza la GUI o la CLI para asignarlo a VPN SSL, gestión HTTPS o servicios proxy:
config vpn ssl settings
set servercert "acme-vpn-cert"
end
He aquí cómo hacerlo mediante la GUI:
Ve a VPN > Configuración SSL-VPN > Certificado de servidor > Selecciona acme-vpn-cert.
Paso 7: Resolución de problemas y renovaciones
Si el certificado no se expide inmediatamente, las razones más comunes son:
- El servidor ACME no ha podido acceder a tu URL de validación (puerto 80 abierto).
- Tu clave KID o HMAC no coincide con lo que espera la CA.
- Has alcanzado un límite temporal de repetición o de velocidad; vuelve a intentarlo pasados unos minutos.
Una vez que el certificado sea válido, FortiGate gestionará las renovaciones automáticamente basándose en tu configuración de auto-regenerate-days. Puedes probar la renovación en cualquier momento con:
execute vpn certificate local renew "acme-vpn-cert"
Fallback: Emisión externa (ACME.sh) e importación a FortiGate
Si el punto final ACME de tu CA no funciona directamente con FortiGate, puedes emitir el certificado externamente con ACME.sh e importarlo. He aquí cómo hacerlo:
Paso 1: Instala ACME.sh
Ejecuta estos comandos en cualquier sistema Linux, macOS o BSD que tenga acceso a Internet. No ejecutes esto en el propio FortiGate (FortiGate no admite scripts shell personalizados).
curl https://get.acme.sh | sh
source ~/.bashrc
Esto instala el cliente acme.sh en tu directorio personal y lo carga en tu shell. Sustituye el marcador de posición por tu CA real y los detalles.
Paso 2: Registra tu cuenta ACME en EAB
acme.sh --register-account \
--server https://acme.yourca.com/v2/acme \
--eab-kid "YOUR_EAB_KID" \
--eab-hmac-key "YOUR_EAB_HMAC_KEY" \
-m [email protected]
Paso 3: Emitir el certificado
acme.sh --issue \
-d vpn.example.com \
--webroot /var/www/html \
--server https://acme.yourca.com/v2/acme \
--eab-kid "YOUR_EAB_KID" \
--eab-hmac-key "YOUR_EAB_HMAC_KEY"
Paso 4: Localiza los archivos del certificado
Tras una emisión correcta, tus archivos de certificado se almacenan en tu directorio personal en ~/.acme.sh/vpn.example.com/
Dentro de esa carpeta, encontrarás
- fullchain.cer – la cadena de certificados completa
- vpn.ejemplo.com.key – tu clave privada
- ca.cer – el certificado de CA intermedia
Puedes abrirlos con un editor de texto o verificar los detalles mediante OpenSSL:
openssl x509 -in fullchain.cer -noout -dates -issuer -subject
Paso 5: Importar a FortiGate
Puedes importar el certificado a través de la GUI:
Ve a: Sistema > Certificados > Importar > Certificado local y
cargar el certificado y la clave privada.
O puedes utilizar la CLI:
config vpn certificate local
edit "acme-vpn-cert"
set private-key "-----BEGIN PRIVATE KEY-----..."
set certificate "-----BEGIN CERTIFICATE-----..."
next
end
Paso 6: Asignar y renovar
Una vez renovado el certificado, asegúrate de reasignarlo a tu VPN SSL o a la interfaz web de FortiGate (si no se aplica automáticamente). Si utilizas un cliente ACME externo en un servidor distinto, configura una tarea programada (como una tarea cron) para copiar automáticamente los archivos del nuevo certificado en FortiGate, mediante SCP o una llamada a la API.
Ejemplo:
scp ~/.acme.sh/vpn.example.com/fullchain.cer admin@fortigate:/root/
scp ~/.acme.sh/vpn.example.com/vpn.example.com.key admin@fortigate:/root/
Luego vuelve a cargar el cert:
execute vpn certificate local import "acme-vpn-cert"
Preguntas frecuentes
Si estás configurando ACME con una AC comercial por primera vez, suelen surgir algunas preguntas. Aquí tienes respuestas rápidas a las que vemos con más frecuencia:
¿Puedo utilizar esta configuración con cualquier AC comercial?
Sí, siempre que tu proveedor admita ACME + External Account Binding (EAB). Las principales CA, como Sectigo y DigiCert, ya proporcionan URL de directorio ACME y credenciales EAB.
¿Necesito abrir ambos puertos HTTP y HTTPS para la validación?
Sólo el puerto 80 (HTTP) es necesario para la validación HTTP-01 de ACME. Mantén HTTPS (443) abierto para el tráfico normal, pero no redirijas las peticiones de validación de HTTP a HTTPS.
¿Qué ocurre si mi certificado no se renueva automáticamente?
Puedes activar la renovación manual en cualquier momento con:
execute vpn certificate local renew "acme-vpn-cert"
Si sigue fallando, vuelve a comprobar tus credenciales EAB, el DNS del dominio y que el cortafuegos sigue permitiendo el acceso saliente al punto final ACME de tu CA.
¿Puedo utilizar las mismas credenciales EAB en varios FortiGate?
Eso depende de tu CA. Algunas permiten reutilizar una cuenta para varios dispositivos, otras emiten credenciales únicas por pedido o dominio. Sigue siempre la política de tu CA para evitar límites de tarifa o conflictos de cuentas.
Palabras finales
Ahora ya sabes cómo instalar un certificado SSL ACME enFortiGate, ya sea mediante su integración nativa en EAB o mediante emisión externa a través de ACME.sh.
Ambos métodos cumplen las normas de seguridad de las empresas y admiten renovaciones totalmente automatizadas con autoridades de certificación comerciales.
Ahorre un 10% en certificados SSL al realizar su pedido hoy mismo.
Emisión rápida, cifrado potente, 99,99% de confianza del navegador, asistencia dedicada y garantía de devolución del dinero en 25 días. Código del cupón: SAVE10

