Skip to main content
This page documents every field in broker.yml. The authoritative source is schemas/broker.schema.json. Most editors (VS Code, JetBrains) will load it automatically if you reference the schema with a YAML # yaml-language-server: $schema=... comment or via your editor’s schema mapping. Required top-level keys: server, policy, issuer.

server

address accepts any Go net.Listen syntax. Use :8443 to bind all interfaces; use 127.0.0.1:8443 and front with a reverse proxy if you need a custom termination model — keep in mind the broker requires mTLS on the connection that reaches it.

policy

The schema and semantics are in Policy overview.

issuer

Currently acme is the only provider.
DNS provider credentials are resolved through secrets — see below and Let’s Encrypt + dns-01.

secrets

See Vault and OpenBao secrets for the credential reference format.

store

The store caches issued certificates (to avoid hitting Let’s Encrypt rate limits) and audit events when audit is enabled.

audit

Inspect events with certplane-broker -c <config> audit tail [--limit N].

rate_limits

0 disables the corresponding limit. Negative values are invalid.

logging

Broker defaults: info, json, stdout.

Validation

certplane-broker rejects the config on startup if:
  • Any required field is missing.
  • tls.min_version is not 1.2 or 1.3.
  • An ACME field required by provider: acme is missing.
  • secrets.provider is vault/openbao without vault.address or with an invalid kv_version.
  • store.driver is not sqlite or file.
  • audit.failure_mode is not fail_open or fail_closed.
  • Either rate-limit value is negative.
Errors are accumulated and reported together so you can fix everything in one pass.