bg-tutorials

Cómo instalar un certificado SSL ACME en FortiGate

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.

Frotigate ACME SSL

Aprenderás dos formas de desplegar:

  1. Integración nativa FortiGate ACME con credenciales EAB
  2. 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-regenerate y auto-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

Una imagen detallada de un dragón en vuelo
Escrito por

Redactor de contenidos experimentado especializado en Certificados SSL. Transformar temas complejos de ciberseguridad en contenido claro y atractivo. Contribuir a mejorar la seguridad digital a través de narrativas impactantes.