broker.yml. La fuente autoritativa es schemas/broker.schema.json.
Claves obligatorias de nivel superior: server, policy, issuer.
server
| Campo | Tipo | Por defecto | Notas |
|---|---|---|---|
address | string | :8443 | Dirección de escucha. |
tls.cert | string | — | Obligatorio. Certificado PEM. |
tls.key | string | — | Obligatorio. Clave PEM. |
tls.min_version | enum: 1.2, 1.3 | 1.2 | Versión mínima TLS. |
mtls.agent_ca_bundle | string | — | Obligatorio. Bundle de CA para verificar agentes. |
read_header_timeout | duration | 5s | |
read_timeout | duration | 10s | |
write_timeout | duration | 60s | |
idle_timeout | duration | 120s |
policy
| Campo | Tipo | Por defecto | Notas |
|---|---|---|---|
path | string | — | Obligatorio. |
watch | bool | false | Recarga la política al cambiar el archivo. |
issuer
acme es actualmente el único provider.
| Campo | Tipo | Por defecto | Notas |
|---|---|---|---|
provider | enum: acme | acme | |
acme.directory_url | string | — | Obligatorio. Staging para pruebas: https://acme-staging-v02.api.letsencrypt.org/directory. |
acme.account_email | string | — | Obligatorio. |
acme.account_key | string | — | Obligatorio. Ruta a la clave privada de la cuenta ACME (la crea el broker en el primer arranque si falta). |
acme.dns_provider | enum: cloudflare, httpreq | — | Obligatorio. Provider DNS para dns-01. |
acme.preferred_chain | string | — | Opcional. |
secrets — ver más abajo y Let’s Encrypt + dns-01.
secrets
| Campo | Tipo | Por defecto | Notas |
|---|---|---|---|
provider | enum: env, file, vault, openbao | env | |
vault.address | string | — | Obligatorio con vault u openbao. |
vault.token | string | — | Token inline. Evítalo en producción. |
vault.token_file | string | — | Archivo con el token. Preferido. |
vault.mount_path | string | secret | |
vault.kv_version | enum: 1, 2 | 2 | |
vault.key | string | value | Clave dentro del secreto. |
vault.timeout | duration | 10s | |
vault.namespace | string | — | Solo Vault Enterprise. |
store
| Campo | Tipo | Por defecto | Notas |
|---|---|---|---|
driver | enum: sqlite, file | sqlite | |
path | string | /var/lib/certplane/broker.db | Archivo SQLite o JSON. |
audit
| Campo | Tipo | Por defecto | Notas |
|---|---|---|---|
enabled | bool | true | |
failure_mode | enum | fail_open | Si falla el registro de auditoría, fail_closed rechaza la emisión; fail_open la permite. |
mirror_to_log | bool | false | Emite cada evento también como línea de log estructurado. |
certplane-broker -c <config> audit tail.
rate_limits
0 desactiva el límite. Negativos son inválidos.
logging
info, json, stdout.
Validación
certplane-broker rechaza la configuración al arrancar si:
- Falta cualquier campo obligatorio.
tls.min_versionno es1.2ni1.3.- Falta un campo ACME exigido por
provider: acme. secrets.provideresvault/openbaosinvault.addresso conkv_versioninválido.store.driverno essqlitenifile.audit.failure_modeno esfail_opennifail_closed.- Algún rate-limit es negativo.