bg-tutorials

Cómo instalar un certificado SSL ACME en TrueNAS

Esta guía muestra cómo instalar un Certificado SSL ACME en TrueNAS utilizando un host externo y EAB (External Account Binding). Es compatible tanto con TrueNAS CORE como con TrueNAS SCALE.

TrueNAS ACME SSL

TrueNAS tiene soporte ACME nativo, pero sólo para Let’s Encrypt a través de su integración DNS-01 incorporada. Si quieres utilizar un proveedor ACME comercial (Sectigo, DigiCert, etc.) con ACME + EAB, debes generar y renovar tu certificado externamente utilizando un cliente ACME como acme.sh, y luego desplegarlo en TrueNAS.


Antes de empezar

Esto es lo que necesitarás:

  • Un nombre de dominio que apunte a la IP pública de tu TrueNAS (por ejemplo, nas.ejemplo.com)
  • TrueNAS CORE 13.x o TrueNAS SCALE 23.x+
  • Una máquina Linux/BSD externa, VPS o servidor doméstico (para ejecutar acme.sh)
  • URL del Directorio ACME, ID de la Clave EAB y HMAC EAB de tu CA comercial
  • Acceso SSH a TrueNAS si piensas automatizar la sincronización

Nota: TrueNAS NO admite proveedores ACME arbitrarios en su interfaz de usuario. Toda la automatización comercial de ACME debe realizarse fuera de TrueNAS.


Paso 1: Instala acme.sh en tu host externo

Esta máquina gestionará el registro, la emisión y las renovaciones de cuentas ACME.

Corre:

curl https://get.acme.sh | sh
source ~/.bashrc
acme.sh --version

Si la versión se imprime correctamente, ya está.


Paso 2: Registra tu cuenta ACME con tu CA comercial (ACME + EAB)

Tu panel de control de CA te proporcionará:

  • EAB Clave ID
  • Clave EAB HMAC
  • URL del Directorio ACME

Registra tu cuenta ACME:

acme.sh --register-account \
  --server https://acme.yourca.com/v2/acme \
  --eab-kid YOUR_EAB_KID \
  --eab-hmac-key YOUR_EAB_HMAC_KEY \
  --accountemail [email protected]

Sustituye los valores por los tuyos. Sólo lo ejecutas una vez.


Paso 3: Emitir el Certificado (se requiere validación DNS-01)

TrueNAS está casi siempre detrás de NAT, por lo que la validación DNS es la más segura.

Aquí tienes un ejemplo de DNS manaul:

acme.sh --issue \
  -d nas.example.com \
  --dns dns_manual \
  --server https://acme.yourca.com/v2/acme

acme.sh te dirá que crees un registro TXT:

_acme-challenge.nas.example.com   TXT   <token>

Crea el registro TXT en tu gestor de DNS y espera a que se propague.

Comprueba la propagación:

dig TXT _acme-challenge.nas.example.com +short

Una vez que aparezca el token, vuelve a ejecutar el mismo comando y acme.sh terminará de emitir el certificado. Tus archivos se guardarán en ~/.acme.sh/nas.ejemplo.com/.

Dentro encontrarás:

  • fullchain.cer: cert del servidor + intermedio
  • nas.ejemplo.com.key: clave privada
  • ca.cer: Cadena CA (si se proporciona por separado)

Paso 4: Importa el Certificado a TrueNAS

  1. Ir a: TrueNAS UI > Sistema > Certificados
  2. Haz clic en Añadir y selecciona Importar certificado
  3. Sube tus archivos de certificado y haz clic en Guardar

Asigna el certificado a tus servicios:

  • Interfaz web
  • Servicios SMB / NFS (si procede)
  • API de middleware
  • Proxies inversos o aplicaciones que utilizan HTTPS (TrueNAS SCALE)

Paso 5: Automatizar la renovación y el despliegue

TrueNAS no extrae automáticamente los certificados. Debes introducir los certificados renovados en TrueNAS.

1. Crea un script de despliegue

En tu host ACME externo, crea /usr/local/bin/truenas-deploy.sh:

Nota: Este script sólo funciona si TrueNAS permite el acceso SSH con un usuario con permiso para ejecutar midclt. Sube la nueva clave + cert a /tmp/ y sustituye el certificado activo a través de la API de TrueNAS. Asegúrate de que las rutas y el dominio coinciden con la configuración de acme.sh.

#!/bin/bash

DOMAIN="nas.example.com"
NAS_USER="root"
NAS_HOST="truenas.local"

CERT_PATH="$HOME/.acme.sh/$DOMAIN"
KEY="$CERT_PATH/$DOMAIN.key"
CERT="$CERT_PATH/fullchain.cer"

scp "$KEY" "$NAS_USER@$NAS_HOST:/tmp/key.key"
scp "$CERT" "$NAS_USER@$NAS_HOST:/tmp/cert.cer"

ssh "$NAS_USER@$NAS_HOST" <<EOF
midclt call certificate.update '{"certificate": "custom", "csr": null, "privatekey": "$(cat /tmp/key.key)", "certificate": "$(cat /tmp/cert.cer)"}'
EOF

Hazlo ejecutable:

chmod +x /usr/local/bin/truenas-deploy.sh

2. Añade un gancho de renovación

Añade un gancho de despliegue en acme.sh:

acme.sh --deploy-hook truenas-deploy \
  -d nas.example.com

O añade esto dentro de ~/.acme.sh/deploy/truenas-deploy.sh.

3. Deja que acme.sh se encargue de todo

Esto es lo que acme.sh hace automáticamente:

  • Comprueba diariamente las renovaciones
  • Renueva el certificado
  • Activa tu script de despliegue
  • Introduce certificados actualizados en TrueNAS
  • Aplica los cambios silenciosamente

Una vez configurado, no tendrás que volver a tocar TrueNAS para renovar los certificados.


Preguntas frecuentes

Si estás configurando la automatización ACME en TrueNAS por primera vez, estas respuestas rápidas cubren los problemas que los usuarios se encuentran con más frecuencia.

¿Puedo utilizar un certificado tanto para la GUI TrueNAS como para otros servicios (portales SMB, NFS, iSCSI)?

Sí. Una vez que importes el certificado en Sistema > Certificados, puedes seleccionar el mismo cert para la interfaz web y para cualquier servicio que exponga HTTPS (interfaz web, API, quizá proxy inverso/HAProxy si lo utilizas). No necesitas certificados distintos para cada servicio, a menos que quieras nombres de host diferentes.

Mi NAS está detrás de CGNAT o doble NAT. ¿Puedo seguir utilizando ACME?

Sí, pero debes utilizar la validación DNS-01. HTTP-01 no funcionará porque el servidor ACME no puede llegar a tu NAS a través del puerto 80. Con DNS-01, la CA sólo comprueba tu registro TXT en _acme-desafío.tudominio.com, por lo que no le importa dónde se encuentra realmente el NAS.

¿Qué ocurre si acme.sh renueva el certificado pero me olvido de volver a importarlo a TrueNAS?

TrueNAS seguirá utilizando el certificado antiguo que importaste la última vez. Los archivos renovados permanecerán en tu host externo hasta que vuelvas a subirlos (o tu script/API se encargue de ello).

Tu sitio seguirá funcionando, pero los navegadores empezarán a avisar de que el certificado ha caducado. Por eso vale la pena o bien programar la reimportación o bien poner un recordatorio cerca de la fecha de caducidad.

¿Puedo utilizar un certificado comodín (como *.ejemplo.com) con TrueNAS

Sí. Mientras la clave privada y el certificado coincidan, a TrueNAS no le importa si es un certificado comodín o de un solo host. Todavía tienes que emitir el comodín a través de DNS-01 en acme.sh, y luego importar fullchain.cer + *.ejemplo.com.key a TrueNAS. Ten cuidado con dónde reutilizas esa clave. Un certificado comodín proporciona control total sobre todos los subdominios que cubre.


Palabras finales

Este flujo de trabajo te ofrece una forma estable y fiable de instalar un certificado ACME en TrueNAS sin luchar contra el sistema. Tu host externo se encarga de emitir, renovar y gestionar el certificado, mientras que TrueNAS simplemente recibe importaciones limpias cada vez que se actualizan los archivos.

Una vez puesto en marcha el proceso, todo se ejecuta silenciosamente en segundo plano, y sólo intervienes si quieres ajustar los scripts o rotar las credenciales.

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.