Saltar al contenido principal
Esta página cubre cómo ejecutar certplane-broker en un host. Referencia completa del esquema: Configuración del broker. Para automatizarlo con Ansible: guía de roles de Ansible.

Requisitos previos

  • Un step-ca accesible (emite las identidades — el broker solo necesita su bundle de CA).
  • Certificado y clave TLS para la API mTLS del broker.
  • Bundle de CA que firma los certificados de identidad de tus agentes (raíz o intermedia de step-ca).
  • Email de cuenta ACME — el broker crea la cuenta en el primer uso.
  • Credenciales del proveedor DNS para dns-01, si vas a emitir wildcards. Soportados: cloudflare, httpreq.

Layout en disco

Layout recomendado, igual al del role certplane_broker:
/etc/certplane/
├── broker.yml
├── policy.yml
├── tls/
│   ├── broker.crt
│   └── broker.key
└── ca/
    └── agent-identity-ca-bundle.crt
/var/lib/certplane/
├── acme/
│   └── account.key
└── broker.db
Un usuario de sistema certplane es dueño de /var/lib/certplane y de la clave de cuenta ACME.

Configuración mínima

/etc/certplane/broker.yml
server:
  address: ":8443"
  tls:
    cert: /etc/certplane/tls/broker.crt
    key: /etc/certplane/tls/broker.key
    min_version: "1.2"
  mtls:
    agent_ca_bundle: /etc/certplane/ca/agent-identity-ca-bundle.crt

policy:
  path: /etc/certplane/policy.yml
  watch: true

issuer:
  provider: acme
  acme:
    directory_url: https://acme-v02.api.letsencrypt.org/directory
    account_email: admin@example.com
    account_key: /var/lib/certplane/acme/account.key
    dns_provider: cloudflare

secrets:
  provider: env

store:
  driver: sqlite
  path: /var/lib/certplane/broker.db

audit:
  enabled: true
  failure_mode: fail_open

logging:
  level: info
  format: json
  destination: stdout
Referencia completa: Configuración del broker. El esquema JSON está en schemas/broker.schema.json.

CLI

El binario es una app Cobra con flag global -c / --config y subcomandos:
ComandoPropósito
certplane-broker -c <config> serveEjecuta la API HTTPS/mTLS.
certplane-broker -c <config> policy validate --policy <ruta>Compila y valida un archivo de política. Imprime el hash y los conteos de perfiles e identidades.
certplane-broker -c <config> certs listVuelca los bundles cacheados como JSON.
certplane-broker -c <config> audit tail [--limit N]Imprime eventos de auditoría recientes como JSON Lines.
-c es obligatorio para todo subcomando.

Unidad systemd

El role certplane_broker incluye esta unidad. Manualmente:
/etc/systemd/system/certplane-broker.service
[Unit]
Description=certplane broker
After=network.target

[Service]
Type=simple
User=certplane
Group=certplane
ExecStart=/usr/local/bin/certplane-broker -c /etc/certplane/broker.yml serve
Restart=on-failure
RestartSec=5s
ReadWritePaths=/var/lib/certplane

[Install]
WantedBy=multi-user.target
Habilita e inicia:
systemctl daemon-reload
systemctl enable --now certplane-broker

Verifica que está corriendo

curl --cacert /ruta/al/broker-server-ca.crt https://broker.example.com:8443/healthz
# ok

curl --cacert /ruta/al/broker-server-ca.crt https://broker.example.com:8443/readyz
# ready
/readyz devuelve 503 policy not loaded hasta que la política está cargada. El endpoint de emisión (POST /v1/certificates) requiere un certificado cliente válido y normalmente solo lo invoca certplane-agent.

Recarga en caliente de la política

policy.watch: true recarga el archivo cuando cambia en disco. Sin reinicio. El broker registra el nuevo hash, útil para correlacionar con el log de auditoría.

Siguientes pasos