Overview
By default, Control Plane issues domain certificates from Let’s Encrypt. A certificate generator replaces that with an ACME certificate authority of your choice, such as a commercial CA that your organization requires. A certificate generator is an org-level resource. It holds the CA’s ACME directory URL, the account credentials, and how ACME challenges are solved. A domain uses it by settingspec.certificateGeneratorLink. Many domains can share one generator.
Configuration
The only supported provider isacme.
The provider, server, and challenge type identify the ACME account. To change any of them, create a new certificate generator and point your domains at it.
Challenge types
An
http01 generator is rejected on a domain that:
- uses
dnsMode: ns, - sets
gvcLink(subdomain-based routing needs a wildcard certificate), or - sets
workloadLink.
HTTP-01
The CA validates the domain by requesting a token over HTTP on the domain itself. No credentials are needed:DNS-01
The CA validates the domain through a TXT record that Control Plane writes into your DNS zone, using credentials you provide in a secret. Setprovider and the matching block:
- When
hostedZoneIdorhostedZoneNameis omitted, the zone is discovered from the domain name. - For
route53, if theawssecret setsroleArn, that role is assumed before records are changed. azureDnssupports the Azure public cloud only.
dns01 generator does not need the _acme-challenge CNAME record that the built-in dns01 challenge requires. When switching a domain from the built-in dns01 challenge to a generator, delete that CNAME record: a TXT record cannot be created at a name that already has a CNAME.
External account binding
Commercial CAs usually issue a key ID and an HMAC key for each ACME account. Store the HMAC key in anopaque secret exactly as the CA issued it (base64url), with encoding plain, and reference it:
Secrets
Every secret a generator references must exist and have the type listed above. Creating or updating a generator requires theuse permission on each referenced secret. A secret that a certificate generator references cannot be deleted.
Example
A DNS-01 generator for a commercial CA, with credentials for Route53:- YAML
- JSON
cpln apply:
Using a generator on a domain
SetcertificateGeneratorLink on the domain:
- The generator defines the challenge type, so the domain must not set
certChallengeType. - It cannot be combined with
tls.serverCertificate.secretLinkon any port. - It is not supported on internal domains.
- Linking a generator to a domain requires the
usepermission on the generator. - The generator must exist. A domain that links to a missing generator is rejected.
Status
Once a generator is created, Control Plane registers the ACME account with the CA. The result is reported instatus:
Check
status.ready before linking domains to a new generator.
Deleting
A certificate generator cannot be deleted while a domain references it. RemovecertificateGeneratorLink from those domains, or point them at another generator, first. A generator tagged cpln/protected cannot be deleted either.
Permissions
Use
certificategenerator as the targetKind in a policy.
Quota
An org can have up to 10 certificate generators by default (certificategenerators quota).