Managed CA bundles for outbound HTTPS (deferred from alerting v1) #137
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
The alerting feature introduces server → external HTTPS webhooks, which makes outbound TLS trust a cross-cutting concern (joining the existing OIDC token-exchange / JWKS fetch paths). Alerting v1 handles this with a shared
OutboundHttpClientFactory+ system config (cameleer.server.outbound-http.trusted-ca-pem-paths) + a per-webhookTrustModeoverride (SYSTEM_DEFAULT/TRUST_ALL/TRUST_PATHS). CA files in v1 are filesystem-resident, managed via deployment config — there is no in-app upload surface.What's deferred
1. SaaS-layer CA reuse — design investigation (do first)
The SaaS layer already manages CA material for the server (reverse-proxy → OIDC path and related). Before building in-app CA management in the OSS server, investigate whether the SaaS CA mechanism can be extended/exposed so the server can consume trust material from the SaaS layer directly.
Goal: KISS + DRY — don't duplicate a CA store in the server if the SaaS side already owns one. If reuse is viable, in-app CA upload in the server may never be needed — the SaaS layer becomes the authoritative admin surface and the server just reads.
2. In-app CA bundle management (only if reuse isn't viable)
Admin UI to upload, list, and delete trusted CA PEMs. Storage in PG (
trusted_ca_certstable) so all replicas see a consistent set without a filesystem sync step. Likely lives under/admin/outbound-http(new admin surface) or as a tab on the existing admin navigation.Acceptance criteria
OUTBOUND_HTTP_TRUST_CHANGE), and cluster-consistent propagation.Why we're not doing it now
Links
docs/superpowers/specs/2026-04-19-alerting-design.mddocs/superpowers/backlog.md→ BL-001cameleer-server-app/src/main/java/com/cameleer/server/app/http/OidcProviderHelper,OidcTokenExchanger