Skip to main content

Architecture

Standard enrollment protocols

Standard enrollment protocolsDevices and workloads enrol over ACME, EST, SCEP, CMP, cert-manager, KMIP or Windows autoenrollment; each protocol endpoint is bound to a DuoKey CA that issues and renews.PROTOCOL ENDPOINTSENROLSIGNCLIENTClientsdevices · workloadsACMERFC 8555ESTRFC 7030SCEPRFC 8894CMPRFC 4210 · 9483cert-managerKubernetesKMIPOASIS 2.1WindowsautoenrollmentCADuoKey CAissue · renewLEGENDClientProtocol endpointIssuing CASigned certificate path

Devices and workloads enrol over the protocol they already speak; the CA bound to each endpoint issues and renews their certificates.

Applies to:
DuoKey Cockpit v2ACME · EST · SCEP · CMPcert-manager · KMIP 2.1

Overview​

Beyond the manual request-and-approval workflow, DuoKey exposes the standard enrollment protocols so clients can obtain and renew certificates without human steps. Each protocol has a public protocol endpoint (what clients call) and admin configuration in the Cockpit (bound to a CA and gated by permissions).

ProtocolStandardTypical clients
ACMERFC 8555certbot, acme.sh, Kubernetes cert-manager, Caddy
ESTRFC 7030Routers, gateways, IoT devices
SCEPRFC 8894Network devices, MDM-managed endpoints
CMPRFC 4210 / 9483Industrial and operator PKIs
cert-managerKubernetesKubernetes workloads (external issuer)
KMIPOASIS KMIP 2.1KMIP clients (key / certificate objects)
Windows autoenrollmentMS-XCEP / MS-WSTEPDomain-joined Windows clients through Group Policy (preview)

ACME (RFC 8555)​

An ACME server per CA, covering the account, order, authorization, challenge, finalize and download flow, with ACME Renewal Information (RFC 9773) so clients renew when the CA suggests — see Short-Lived Certificates & ACME ARI. The revoke-cert request is accepted but does not yet add the certificate to the CRL or OCSP responses. Point any ACME client (or cert-manager's ACME issuer) at the CA's ACME directory URL — {cockpit-url}/api/pki/acme/{ca-id}/directory.

Real domain-control validation

http-01 challenges are validated for real: the ACME server fetches http://{domain}/.well-known/acme-challenge/{token} back from the requester and checks the key authorization, exactly like a public CA would. There is no silent auto-approval — an internal or trusted-network CA can opt into skipping this check for lab use, but it is off by default.

Using ACME with Kubernetes cert-manager​

The most direct way to get DuoKey-issued, auto-renewing TLS certificates into a Kubernetes cluster today is cert-manager's built-in ACME issuer type, pointed at your CA's ACME directory. This has been verified end-to-end against a real cluster: cert-manager both issuing and renewing a certificate through this endpoint.

Prerequisites

  • ACME enabled on the issuing CA (Cockpit → PKI → ACME → Configure)
  • cert-manager installed in the cluster
  • An ingress controller installed (cert-manager's http-01 solver routes the challenge through it)
  • The requested domain resolves to somewhere the Cockpit can reach — a public address, or a private-network address if the Cockpit runs inside your network (loopback and link-local targets are always rejected)
1

Register a ClusterIssuer

cluster-issuer.yamlYAML
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: dke-cockpit-acme
spec:
acme:
  server: https://{cockpit-url}/api/pki/acme/{ca-id}/directory
  email: [email protected]
  privateKeySecretRef:
    name: dke-cockpit-acme-account-key
  solvers:
    - http01:
        ingress:
          ingressClassName: nginx
2

Request a certificate

certificate.yamlYAML
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: example-tls
namespace: default
spec:
secretName: example-tls
dnsNames:
  - app.example.com
issuerRef:
  name: dke-cockpit-acme
  kind: ClusterIssuer
  group: cert-manager.io
3

Renewal is automatic

cert-manager reissues before expiry (its default is two-thirds of the certificate's lifetime, configurable via renewBefore), driving the exact same order → challenge → finalize flow as the initial issuance — no manual intervention required.

EST (RFC 7030)​

Enrollment over Secure Transport, supporting the standard cacerts, simpleenroll, simplereenroll, serverkeygen and csrattrs operations for devices and gateways. For fleet provisioning, renewal and rate limits, see Device Identity at Scale.

SCEP (RFC 8894)​

Simple Certificate Enrollment Protocol with configurable profiles for classic SCEP clients such as network devices and MDM-managed endpoints. A profile can validate each request with Microsoft Intune instead of a static challenge — see Intune & MDM Certificate Delivery.

SCEP and vault-resident CA keys

SCEP decrypts each request with the CA key, which vault back-ends do not offer. A SCEP profile therefore needs an RSA CA whose key is held in software by the platform; it cannot use a CA whose key is in an HSM, a cloud KMS or an MPC vault.

CMP (RFC 4210 / 9483)​

Certificate Management Protocol with named aliases, transaction tracking and per-alias metrics, for industrial and operator PKIs. See Device Identity at Scale for provisioning and kur renewal.

Windows autoenrollment (MS-XCEP / MS-WSTEP)​

Domain-joined Windows users and computers can enroll and renew certificates from a DuoKey CA through Group Policy (preview) — see Windows Autoenrollment.

Kubernetes cert-manager (native external issuer)​

DuoKey also defines a native cert-manager external-issuer type (API group dke.duokey.com), for a tighter CSR-relay integration without an intermediate ACME layer — cert-manager submits CSRs directly and DuoKey returns signed certificates.

Rolling out

This integration is still on its way to general availability — reach out to your DuoKey contact for current status. The ACME method above is the supported way to use cert-manager with DuoKey today.

KMIP 2.1 server​

DuoKey can act as a KMIP server, exposing key / certificate objects and operations to KMIP clients.

Unified endpoint lifecycle​

All protocol endpoints (EST / SCEP / ACME / CMP / KMIP) share a common endpoint lifecycle — deploy, start, pause, stop — with health and metrics, so you can operate them consistently.

Sequence

ACME order flow

ACME order flowThe ACME client reads the directory, registers an account and opens an order; the DuoKey ACME server fetches the http-01 token back from the requester's domain, checks the key authorization, then finalizes the CSR and serves the certificate.GET DIRECTORYENDPOINTSNEW ACCOUNTNEW ORDERAUTHZ + TOKENCHALLENGE POSTHTTP-01 GETKEY AUTHZVERIFYFINALIZE + CSRDOWNLOADCERTIFICATEREQUESTERACME clientcertbot · cert-managerCOCKPITDuoKey ACME serverone per CALEGENDCallDomain validationReturnCertificate issuedLocal check

ACME (RFC 8555): the client proves control of the domain over http-01, submits a CSR, then downloads the issued certificate, fully automated.