DAT CMS
DAT CMS crea certificados, los almacena en una base de datos y entrega los certificados adecuados a los servicios emisores y verificadores. El comportamiento del protocolo se describe en la especificación de DAT CMS.
Crear una configuración de ejecución
Servicio de gestión de certificados DAT
Servidor
Comando de ejecución
Base de datos
Certificado DAT
Control de acceso
Ejecutar con Docker
Ejecuta el contenedor como usuario no root. Si usas SQLite, monta un directorio de datos con permiso de escritura. Proporciona los tokens y las contraseñas de la base de datos mediante un mecanismo de inyección de secretos, no mediante el historial de comandos.
docker run --rm --name dat-cms -p 8088:8088 \
--user 10001:10001 \
-v "$PWD/dat-cms-data:/data" \
-e PORT=8088 \
-e DB_URI='sqlite:/data/data.db' \
-e TOKEN_MASTER='replace-with-a-secret' \
-e TOKEN_CERT_FULL='replace-with-a-secret' \
-e TOKEN_CERT_VERIFY='replace-with-a-secret' \
sarolab/dat-cmsBase de datos
Usa DB_URI para configurar una conexión SQLite, PostgreSQL o MySQL. MariaDB se conecta mediante el protocolo MySQL. CMS almacena en caché los resultados de las consultas de certificados como una instantánea y sigue sirviendo la última instantánea correcta si falla temporalmente una actualización del almacén.
DB_CACHE_SECS establece el intervalo de actualización de la instantánea y DB_QUERY_TIMEOUT_SECS limita las consultas de actualización. Si no existe ninguna instantánea correcta y no puede leerse el almacén, el servicio devuelve DAT_STORE_UNAVAILABLE.
Roles de acceso
| Variable de entorno | Permiso | Usado por |
|---|---|---|
TOKEN_MASTER | Registrar certificados y obtener la versión protegida | Operaciones |
TOKEN_CERT_FULL | Obtener certificados completos | Servicios emisores de DAT |
TOKEN_CERT_VERIFY | Obtener certificados exclusivos para verificación | Servicios de verificación y descifrado |
Cada variable acepta tokens alfanuméricos separados por comas. Si la lista de tokens de un rol está vacía, sus endpoints quedan abiertos y se registra una advertencia.
Generación de certificados
El rol master registra un certificado indicando el algoritmo de firma, el algoritmo de cifrado, el retraso de propagación, el periodo de emisión y el TTL. Durante el retraso de propagación, los servicios sincronizan el certificado nuevo antes de que pueda emitir.
Integración del cliente
- Usa el token completo y el endpoint de certificados completos para los servicios emisores.
- Usa el token de verificación y la opción verify-only para los servicios verificadores.
- Comprueba el resultado de la primera sincronización; si el inicio debe fallar, llama a la API de sincronización inmediata.
- Cuando la sincronización automática esté activa, cierra el gestor al finalizar la aplicación.
Consulta las guías de las bibliotecas para conocer el builder y el cierre de cada lenguaje.
Comprobaciones operativas
/healthy/version/apiinforman del estado sin autenticación./versionexige el master token si ese rol está configurado.- Recopila los registros de la salida estándar y la salida de error estándar.
- Reenvía las señales de cierre y deja tiempo para que la base de datos y el scheduler se cierren.
Kubernetes
Ajusta el puerto del contenedor y los probes al puerto del servicio, y monta el directorio de datos con permiso de escritura para el usuario no root. Inyecta los tokens y los datos de conexión a la base de datos mediante Secrets.
securityContext:
runAsNonRoot: true
runAsUser: 10001
runAsGroup: 10001
containers:
- name: dat-cms
image: sarolab/dat-cms
ports: [{ containerPort: 8088 }]
readinessProbe: { httpGet: { path: /health, port: 8088 } }
livenessProbe: { httpGet: { path: /health, port: 8088 } }