Saltar al contenido principal
Esta página documenta cada campo de broker.yml. La fuente autoritativa es schemas/broker.schema.json. Claves obligatorias de nivel superior: server, policy, issuer.

server

server:
  address: "0.0.0.0: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
  read_header_timeout: 5s
  read_timeout: 10s
  write_timeout: 60s
  idle_timeout: 120s
CampoTipoPor defectoNotas
addressstring:8443Dirección de escucha.
tls.certstringObligatorio. Certificado PEM.
tls.keystringObligatorio. Clave PEM.
tls.min_versionenum: 1.2, 1.31.2Versión mínima TLS.
mtls.agent_ca_bundlestringObligatorio. Bundle de CA para verificar agentes.
read_header_timeoutduration5s
read_timeoutduration10s
write_timeoutduration60s
idle_timeoutduration120s

policy

policy:
  path: /etc/certplane/policy.yml
  watch: true
CampoTipoPor defectoNotas
pathstringObligatorio.
watchboolfalseRecarga la política al cambiar el archivo.
Semántica del archivo en Resumen de política.

issuer

acme es actualmente el único provider.
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
    preferred_chain: "ISRG Root X1"
CampoTipoPor defectoNotas
providerenum: acmeacme
acme.directory_urlstringObligatorio. Staging para pruebas: https://acme-staging-v02.api.letsencrypt.org/directory.
acme.account_emailstringObligatorio.
acme.account_keystringObligatorio. Ruta a la clave privada de la cuenta ACME (la crea el broker en el primer arranque si falta).
acme.dns_providerenum: cloudflare, httpreqObligatorio. Provider DNS para dns-01.
acme.preferred_chainstringOpcional.
Las credenciales del provider DNS se resuelven vía secrets — ver más abajo y Let’s Encrypt + dns-01.

secrets

secrets:
  provider: env       # env | file | vault | openbao
  vault:
    address: https://vault.int.example.com:8200
    token_file: /etc/certplane/vault-token
    mount_path: secret
    kv_version: 2
    key: value
    timeout: 10s
    namespace: ""
CampoTipoPor defectoNotas
providerenum: env, file, vault, openbaoenv
vault.addressstringObligatorio con vault u openbao.
vault.tokenstringToken inline. Evítalo en producción.
vault.token_filestringArchivo con el token. Preferido.
vault.mount_pathstringsecret
vault.kv_versionenum: 1, 22
vault.keystringvalueClave dentro del secreto.
vault.timeoutduration10s
vault.namespacestringSolo Vault Enterprise.
Ver Secretos en Vault y OpenBao.

store

store:
  driver: sqlite              # sqlite | file
  path: /var/lib/certplane/broker.db
El store cachea certificados emitidos y eventos de auditoría.
CampoTipoPor defectoNotas
driverenum: sqlite, filesqlite
pathstring/var/lib/certplane/broker.dbArchivo SQLite o JSON.

audit

audit:
  enabled: true
  failure_mode: fail_open     # fail_open | fail_closed
  mirror_to_log: false
CampoTipoPor defectoNotas
enabledbooltrue
failure_modeenumfail_openSi falla el registro de auditoría, fail_closed rechaza la emisión; fail_open la permite.
mirror_to_logboolfalseEmite cada evento también como línea de log estructurado.
Inspecciónalos con certplane-broker -c <config> audit tail.

rate_limits

rate_limits:
  per_identity_per_hour: 50
  per_identity_profile_per_hour: 20
0 desactiva el límite. Negativos son inválidos.

logging

logging:
  level: info        # debug | info | warn | error
  format: json       # text | json
  destination: stdout  # stdout | stderr
Defaults del broker: info, json, stdout.

Validación

certplane-broker rechaza la configuración al arrancar si:
  • Falta cualquier campo obligatorio.
  • tls.min_version no es 1.2 ni 1.3.
  • Falta un campo ACME exigido por provider: acme.
  • secrets.provider es vault/openbao sin vault.address o con kv_version inválido.
  • store.driver no es sqlite ni file.
  • audit.failure_mode no es fail_open ni fail_closed.
  • Algún rate-limit es negativo.
Los errores se acumulan y se reportan juntos.