Requisitos previos
Antes de empezar:
- step-ca — Una instancia de step-ca accesible desde tus hosts. Es la CA interna que emite los certificados de identidad de los agentes.
- Acceso a Let’s Encrypt — El broker usa ACME para obtener certificados públicos. Necesitas un correo válido para la cuenta ACME.
- Un proveedor DNS soportado para dns-01 — Actualmente
cloudflareohttpreq. Los perfiles wildcard requierendns-01. - Los binarios de Certplane —
certplane-brokeren el host del broker ycertplane-agenten cada host gestionado. Se compilan conmakedesde el repositorio fuente.
Despliega el broker
Crea El broker escucha en
/etc/certplane/broker.yml (refleja examples/config/broker.yml):broker.yml
server.mtls.agent_ca_bundle debe ser el bundle de CA que firma los certificados de identidad de tus agentes — normalmente la raíz o intermedia de step-ca.Inicia el broker::8443 y exige mTLS a todo agente conectado. Referencia completa en Configuración del broker.Crea el archivo de política
Crea Referencia completa en Resumen de política.
/etc/certplane/policy.yml:policy.yml
- profiles — Cada perfil define
type(wildcardomulti_san),dns_namespermitidos, opciones ACME (acme.challengeyacme.credentials) y unrenew_beforeopcional. - hosts — Cada entrada mapea una etiqueta a una
identity(el CN del certificado emitido porstep-ca) y lista losprofilesque ese host puede solicitar. Las peticiones a otros perfiles se rechazan.
Registra tu primer host
El registro entrega al host su certificado de identidad. El agente contacta Escribe el token en el host en la ruta indicada por la configuración del agente (p. ej. Ejecuta el registro:El agente genera
step-ca una vez con un token de arranque corto, genera un par ECDSA localmente y guarda identity.crt.Genera un token de arranque en step-ca:/etc/certplane/bootstrap-token, modo 0600).Crea la configuración del agente en /etc/certplane/agent.yml (refleja examples/config/agent.yml):agent.yml
identity.key localmente, construye un CSR y lo envía a step-ca junto con el token. Si todo va bien, identity.crt se escribe y el archivo del token se borra.El token de arranque se consume durante el registro y no es reutilizable. Si falla y necesitas reintentar, genera un token nuevo desde
step-ca. Más detalle en Registro del agente.Ejecuta el agente
Una vez registrado el host, ejecuta el bucle de renovación. El agente es un binario one-shot — programalo con un timer (el role de Ansible incluye uno; consulta Ejecutar el agente para la unidad standalone).En cada ejecución, el agente:
- Renueva el certificado de identidad si expira dentro de
identity.renew_before. - Para cada entrada en
certificates:- Asegura una clave de servicio ECDSA local en
key(la genera si falta, la reutiliza si existe). - Salta el certificado si el existente es válido y aún no entra en la ventana de
renew_before. - Si no, construye un CSR con los
dns_names, llama al broker por mTLS, valida que el bundle devuelto coincide con la clave local y con los DNS solicitados, escribecert,chainyfullchain, y ejecutareload_commandsi está definido.
- Asegura una clave de servicio ECDSA local en
Próximos pasos
- Guía de roles de Ansible — despliegue de producción con los roles oficiales.
- Configuración del broker y Configuración del agente.
- Resumen de política.
- Let’s Encrypt + dns-01.