Files
bongo/docs/tls.md
T
2026-07-18 22:29:44 +02:00

50 lines
2.7 KiB
Markdown

# TLS policy
Bongo offers TLS 1.3 and TLS 1.2 by default. Older protocol versions are only
available on listeners whose explicit legacy-TLS option is enabled. Keep those
listeners restricted to trusted legacy networks; do not expose them directly
to the Internet.
The SMTP delivery agent uses opportunistic STARTTLS. When a peer offers
STARTTLS, `outbound_tls_verify` verifies its certificate chain against the
system trust store and verifies the connected MX or configured LMTP host name.
It defaults to `true`. Set it to `false` only for a peer whose certificate
cannot yet be repaired.
`outbound_tls_required` defaults to `false`, so delivery remains possible to
SMTP servers which do not offer STARTTLS. Enabling it defers mail instead of
sending plaintext. It is a global policy and should only be enabled when every
configured destination is known to support TLS. A later policy layer may apply
per-domain DANE or MTA-STS requirements.
External-account collection and submission use libcurl and independently
verify certificates and host names by default. See `external-accounts.md` for
the credential and provider policy.
Initial setup stores the default certificate and key as
`/etc/bongo/ssl.d/server.crt` and `/etc/bongo/ssl.d/server.key`. The key is
root-owned, group-readable by Bongo, and never world-readable. Setup creates a
3072-bit RSA self-signed certificate only when no pair exists. A complete
existing pair is parsed and checked for a matching key before reuse; unsafe,
invalid, or incomplete material fails closed.
The `bongoworker` ACME job implements RFC 8555 directly. It honors CA
`Retry-After` limits and renewal information, writes candidate material first,
validates the complete certificate/key pair, then deploys it atomically and
signals the manager to reload TLS listeners. HTTP-01 is the default. DNS-01
publishes `base64url(SHA-256(keyAuthorization))`, waits for the exact TXT value
through ldns, and removes only the value created for that authorization.
For DNS-01, `/etc/bongo/acme.d/providers` selects the longest matching zone.
Use `type: "nsupdate"` for the native RFC 2136 adapter; `rfc2136` is an alias.
No external `nsupdate` process is used. The adapter supports SOA-primary
discovery, explicit IPv4/IPv6 or host-name servers, non-default ports, and
TSIG HMAC algorithms. Delegated CNAME challenges use `match_zone`,
`challenge_alias`, and the provider's target `zone`. Installed examples are
in `/usr/share/bongo/examples/acme`.
`bongo-admin migrate` moves the historical `osslcert.pem` and `osslpriv.pem`
pair from the state database directory into `ssl.d` only when both files are
present and the destination is empty. ACME deployments should atomically
install a complete pair and reload or restart the affected Bongo agents.