๐ Recent release history (last 2 versions)
[2.200] - 2026-07-21
Added
- ACME client protocol coverage โ upstream certificate revocation through the proxy (previously answered 501), ARI consumption (RFC 9773: suggested renewal windows and the
replacesfield on renewal orders), TLS-ALPN-01 challenge support (RFC 8737) and IP identifiers (RFC 8738). - ACME server conformance (RFC 8555) โ registered error types (
badNonce,badRevocationReason,caaโฆ), full order/authorization state machine (processing,expired, authorization failures propagate to the order), subproblem documents (ยง6.7.1), contact validation (unsupportedContact/invalidContact),errorfield exposed on orders, EABprotected.urlverification,application/jose+jsoncontent type, ARIreplacestracking (migration 063). - SCEP (RFC 8894) โ GetCert and GetCRL operations, mandatory 16-byte senderNonce, intermediate chain in GetCACert (degenerate PKCS#7), signingTime validation, signed GetNextCACert, AES-128-CBC encryption, PasswordRecipientInfo with PBKDF2 for non-RSA clients, strict SignerInfo/RecipientInfo/eContentType validation.
- OCSP (RFC 6960) โ multi-certificate requests (ยง4.1.1), unknown critical request extensions answered with
malformedRequest, delegated responder validation (issued by the CA, within validity, OCSPSigning EKU), configurable response validity window. - CAA (RFC 8657/8659) โ
accounturiandvalidationmethodsparameters enforced during ACME issuance, fail-closed on critical flags and on DNS failures (SERVFAIL/timeout),iodefreports logged. - EST (RFC 7030) โ strict
application/pkcs10content type, certs-only responses (smime-type=certs-only), subject+SAN comparison on re-enroll, unauthenticated/csrattrs, spec-conformant server-side key generation (CMS EnvelopedData ยง4.4). - TSA (RFC 3161) โ
reqPolicyvalidation (unacceptedPolicyon mismatch), signer EKUtimeStampingverification, hash algorithm aligned with the message imprint, per-token audit. - Certificate Transparency (RFC 6962) โ pre-certificate submission flow (
add-pre-chain) with the SCT list embedded as an X.509 extension in the issued certificate (opt-inct_embed_sct, withct_requiredenforcement). - Misc protocol hardening โ syslog RFC 6587 octet-counting framing with TLS verify option, WebAuthn authenticator clone detection (signature counter), SSH CA allowed-principals patterns (fnmatch) with CA/cert type checks, Kerberos PKINIT EKU in the EKU catalog, RFC 4514 LDAP DN parsing.
Security
- OCSP cache invalidated on revocation โ revoking a certificate now purges every cached OCSP response for it (per-algorithm cache entries were missed), so revoked certificates stop being reported
goodimmediately (RFC 6960 ยง2.2). Nonced responses are no longer cached, and lookups are scoped to the issuing CA to prevent cross-CA serial collisions. - ACME POST-as-GET enforced โ orders, authorizations and certificates now require a signed JWS request; they were previously readable without authentication (
renewalInfostays public per RFC 9773). - OIDC SSO id_token verification โ signature, issuer, audience, expiry and nonce are now validated against the provider's JWKS (discovery with key caching, fail-closed; migration 062). Upgrade note: verification defaults to on; existing OIDC providers must have their issuer (and JWKS URI, or a discoverable issuer) configured in Settings โ SSO, otherwise OIDC logins fail closed with "OIDC issuer is not configured" until set. Verification can be turned off per provider if needed.
- Name constraints enforced on every issuance path โ the subject and SANs are validated against the NameConstraints of the whole CA chain (not just the direct issuer) on web, ACME, EST, SCEP, renewal and approval-policy issuance; unauthorized CSR extensions are filtered from issued certificates.
- Delegated-authority EKUs restricted for protocol enrollees โ certificates issued from a CSR via ACME/EST/SCEP can no longer carry
id-kp-OCSPSigningorid-kp-timeStamping, which would otherwise let a domain-validated client mint an OCSP delegated responder for the whole CA. - SCEP GetNextCACert response is now signed as required by RFC 8894.
- Certificate Transparency policy applied on all issuance paths โ SCT embedding and the
ct_requiredgate now apply to ACME- and EST-issued certificates, not only the web issuance path.
Fixed
- ACME pre-authorization (RFC 8555 ยง7.4.1) crashed when validating a challenge on an authorization not bound to an order.
- ACME wildcard orders kept the
*.prefix in the authorization identifier and omitted thewildcard: trueflag. - CRL scheduler used delta CRL metadata to decide full-CRL regeneration timing.
- Microsoft AD CS: admin channel test now uses the form's unsaved values โ changing e.g. the WinRM transport no longer requires saving before testing, and a test never persists anything.
- Microsoft AD CS: inventory sync no longer duplicates certificates signed through UCM โ deduplication matches the CA's RequestId and compares serial numbers under both byte orders (
certutilreports serials with reversed byte pairs). - Microsoft AD CS: imported certificates can now be renewed โ when the original CSR/key is not in UCM, renewal generates a fresh key pair and a CSR with the same subject and SANs (rekey) and submits it to the issuing connection; a "No Key" badge on the certificate detail makes key-less imports explicit.
- SSH host CA setup script printed an API signing example with a nonexistent endpoint and the CA name where its id belongs.
[2.199] - 2026-07-20
Added
- ACME proxy advertises Renewal Information (ARI, RFC 9773) โ the proxy directory now exposes a
renewalInfoendpoint served locally from the stored certificate, so ACME clients can schedule renewals of proxy-issued certificates. Imported certificates now populate AKI/SKI and serial number so their ARIcertIDresolves. - Configurable trust store sync limit โ the maximum number of certificates fetched per sync is now adjustable from the Trust Store page instead of being hardcoded.
Changed
- Generic external-CA metadata for ACME proxy certificates โ certificates issued through the ACME proxy are stored with source
acme_clientand labelled with the external account name (e.g. Actalis, ZeroSSL) instead of the hardcoded "Let's Encrypt" identity. Proxy orders are pinned to their external CA account, and the ACME history view shows the account label with a newacme_clientsource filter.
Security
- ACME EAB HMAC keys encrypted at rest โ external account EAB secrets (
acme_client_accounts.eab_hmac_keyand the legacyacme.client/acme.proxySystemConfig values) are now encrypted with the master key on write, transparently decrypted on read, and rewritten by migration 061 where encryption is enabled. Legacy plaintext values remain readable.
Full history: CHANGELOG.md
Installation
Docker (Recommended)
# From Docker Hub
docker pull neyslim/ultimate-ca-manager:2.201-rc1
# Or from GitHub Container Registry
docker pull ghcr.io/neyslim/ultimate-ca-manager:2.201-rc1
# Run
docker run -d -p 8443:8443 \
-e SECRET_KEY=$(openssl rand -hex 32) \
--name ucm neyslim/ultimate-ca-manager:2.201-rc1Debian/Ubuntu
wget https://github.com/NeySlim/ultimate-ca-manager/releases/download/v2.201-rc1/ucm_2.201.rc1_all.deb
sudo dpkg -i ucm_2.201.rc1_all.deb
sudo apt-get install -fFedora/RHEL
wget https://github.com/NeySlim/ultimate-ca-manager/releases/download/v2.201-rc1/ucm-2.201.rc1-1.fc43.noarch.rpm
sudo dnf install ./ucm-2.201.rc1-1.fc43.noarch.rpmSilent/Automated Install
# Skip firewall prompts for CI/automation
sudo UCM_PORT=8443 UCM_FIREWALL=no dpkg -i ucm_2.201.rc1_all.debDefault Credentials
- Username:
admin - Password:
changeme123
Change the password immediately after first login!
Documentation
- Installation Guide
- API Documentation