Highlights
- Integrations replace cluster tokens (#18, thanks @tilwegener): CA-bound service tokens are now typed
kubernetes,sceporgenericintegrations, managed from Operations → Integrations. Existing cluster tokens keep working unchanged, as do the legacycluster.*API and/clusterslinks.- The external issuer API enforces a CSR profile in the backend: an extension allowlist; no CA certificates or
keyCertSign/cRLSign; RSA 2048–8192; forscep, clientAuth-only and at most 90 days. - Issuance, retries, status and revocation are scoped to the integration that owns the certificate. Revoking an already revoked certificate no longer regenerates the CRL.
- Rejected external requests are audited with their error code. Anonymous rejections are rate-bounded so they can't flood
audit_log.
- The external issuer API enforces a CSR profile in the backend: an extension allowlist; no CA certificates or
- SCEP device enrollment (#19, thanks @tilwegener): a standalone RSA SCEP gateway (
scep/, imageghcr.io/oriolrius/pki-manager-web/scep) with shared-challenge, native Intune and MDM-webhook authorization.- The gateway never talks to the KMS. RA provisioning, renewal, signing and decryption are backend endpoints (
/api/v1/external/ra/*) bound to the gateway'sscepintegration and CA. Every RA operation is audited, and the RA key stays in Cosmian KMS. - Deployment:
scep/compose.yml(adds one gateway to an existing install) or thedocker/docker-compose.scep.ymloverlay, plus Intune/MDM overlays. Setup is inscep/README.mdandDEPLOYMENT.md.
- The gateway never talks to the KMS. RA provisioning, renewal, signing and decryption are backend endpoints (
Upgrade notes — read before deploying
- Back up the database first. Migrations 0010–0011 run automatically on start and turn
clustersintointegrations. Older images can't use the migrated DB, so rollback means restoring the backup. Follow docs/deployment/integrations-0010.md. - KMS 5.28.0 is required for SCEP RA renewal. KMS 5.24 reuses the certificate serial when the same key is renewed, and the backend refuses it. The dev, Docker and e2e stacks now pin
cosmian/kms:5.28.0. Back up the KMS data before recreating the container: the 5.28 upgrade of the database is one-way. If you don't enable SCEP, everything else works on 5.24. - The SCEP gateway must sit behind a rate-limiting ingress (see
scep/README.md) and reach the backend over HTTPS (or loopback).
Fixes
- Dev/e2e KMS lost its keys on recreate (#20, TASK-238):
kms/kms.tomlused config keys that Cosmian 5.24+ silently ignores, so the SQLite DB lived inside the container. The file now uses the current schema and persists tokms/data.kms/README.mdexplains how to rescue a DB left inside an old container.
Known issues
- Unchanged from v3.14.x: export passwords still travel in request URLs (TASK-237).
- Behind a reverse proxy, the per-IP budget for anonymous rejection audits sees the proxy's IP, because the backend doesn't set
trustProxyyet. Auditing stays bounded, but the rows don't carry the real client IP.
Full Changelog: v3.14.2...v3.15.0