Esta guía te lleva por la configuración completa de Certplane: ejecutar el broker, definir una política de certificados, registrar un host con su certificado de identidad e iniciar el bucle de renovación del agente. Al finalizar, tu host tendrá un certificado TLS de confianza pública que se renovará automáticamente.Documentation Index
Fetch the complete documentation index at: https://certplane.kippel.org/llms.txt
Use this file to discover all available pages before exploring further.
Requisitos previos
Antes de empezar, asegúrate de tener lo siguiente:
- step-ca — Una instancia de step-ca en ejecución accesible para tus hosts. Es la CA interna que emite los certificados de identidad del agente.
- Acceso a Let’s Encrypt — El broker usa ACME para obtener certificados públicos. Necesitas una dirección de correo válida para la cuenta ACME.
- Token DNS de Cloudflare — Certplane usa el desafío
dns-01para demostrar la propiedad del dominio. Crea un token de API en tu panel de Cloudflare con permisoZone:DNS:Editpara la zona correspondiente. - Los binarios de Certplane —
certplane-brokeren tu host de broker ycertplane-agenten cada host gestionado.
Despliega el broker
El broker es el servidor central que aplica la política y obtiene certificados de tu CA pública. Crea Coloca el certificado y la clave TLS del broker en las rutas indicadas en El broker escucha en
/etc/certplane/broker.yml:broker.yml
server.tls. El valor de server.mtls.agent_ca_bundle debe ser el conjunto de certificados de la CA que firmó (o firmará) tus certificados de identidad de agente: es el certificado raíz de step-ca.Una vez que el archivo de configuración esté en su sitio, inicia el broker::8443 por defecto y requiere mTLS de cada agente que se conecte. Para una referencia completa de configuración, consulta Configuración del broker.Crea un archivo de política
El archivo de política define qué perfiles de certificado existen y qué hosts pueden solicitar cada uno. Crea
/etc/certplane/policy.yml:policy.yml
- profiles — Cada perfil con nombre define el tipo de certificado (
cert_type: wildcardocert_type: multi), los nombres DNS a incluir y el método de desafío ACME (acme_challenge: dns-01oacme_challenge: http-01). - hosts — Cada entrada de host asigna una clave legible a una identidad de host (el CN del certificado de identidad emitido por step-ca) e indica qué perfiles puede solicitar ese host. El broker rechaza cualquier petición de un perfil no listado aquí.
Registra tu primer host
El registro proporciona a un host su certificado de identidad. El agente contacta con step-ca una sola vez usando un token de arranque de corta duración, genera un par de claves localmente y almacena el Escribe el token en el host en la ruta que referenciarás en la configuración del agente (por ejemplo, Ejecuta el registro:El agente genera
identity.crt resultante.Genera un token de arranque en tu instancia de step-ca:/etc/certplane/agent/bootstrap-token).Crea la configuración del agente en /etc/certplane/agent.yml:agent.yml
identity.key localmente, crea un CSR y lo envía a step-ca junto con el token de arranque. Si tiene éxito, identity.crt se escribe en la ruta definida en identity.cert.El token de arranque se consume durante el registro y no puede reutilizarse. Si el registro falla y necesitas reintentarlo, genera un nuevo token desde step-ca. Consulta Registro del agente para solucionar problemas.
Ejecuta el agente
Una vez registrado el host, inicia el bucle de renovación:Al iniciarse, el agente:
- Genera una nueva
service.keypara cada entrada de certificado. - Construye un CSR con los nombres DNS de tu configuración.
- Se conecta al broker por mTLS presentando
identity.crtcomo certificado de cliente. - El broker verifica la identidad, comprueba la política y devuelve un certificado en caché o solicita uno nuevo a Let’s Encrypt mediante ACME.
- El agente escribe el certificado, la cadena y la cadena completa en las rutas configuradas y ejecuta el
reload_commandque hayas especificado.
renew_before (predeterminado: 720 horas). Para más detalles sobre el bucle de renovación y la integración con systemd, consulta Ejecución del agente.