Skip to content

Commit eb754bd

Browse files
Merge pull request #1704 from wallrj/acme-profiles-docs
Add documentation for ACME certificate profiles
2 parents d3d777d + 96caf0a commit eb754bd

File tree

11 files changed

+56
-1
lines changed

11 files changed

+56
-1
lines changed

content/docs/configuration/acme/README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ spec:
5757
# Let's Encrypt will use this to contact you about expiring
5858
# certificates, and issues related to your account.
5959
60+
# If the ACME server supports profiles, you can specify the profile name here.
61+
# See #acme-certificate-profiles below.
62+
profile: tlsserver
6063
server: https://acme-staging-v02.api.letsencrypt.org/directory
6164
privateKeySecretRef:
6265
# Secret resource that will be used to store the account's private key.
@@ -80,6 +83,39 @@ Solvers come in the form of [`dns01`](./dns01/README.md) and
8083
these solver types, visit their respective documentation -
8184
[DNS01](./dns01/README.md), [HTTP01](./http01/README.md).
8285

86+
### ACME Certificate Profiles
87+
88+
> ℹ️ This feature is available in cert-manager `>= v1.18.0`.
89+
90+
An ACME Server *may* offer a selection of different certificate profiles to ACME Clients.
91+
92+
Use the optional `profile` field in the `Issuer` or `ClusterIssuer` to select a profile for your ACME orders.
93+
94+
Let's Encrypt already offers [a selection of profiles](https://letsencrypt.org/docs/profiles/).
95+
Other ACME servers may not yet support profiles or they might offer different profiles, so check your ACME server's documentation to see what profiles are available.
96+
97+
You can find out if your ACME server supports profiles by downloading the directory object.
98+
For example:
99+
100+
```bash
101+
curl -fsSL https://acme-staging-v02.api.letsencrypt.org/directory
102+
```
103+
104+
If profiles are supported you will see "profiles" among the fields of the JSON object.
105+
106+
If you do not specify a profile, the ACME server will use its default profile,
107+
which in the case of Let's Encrypt, is the `classic` profile.
108+
109+
> ⚠️ If you specify a profile and connect to an ACME server that does not yet support the [ACME Profiles Extension][rfc],
110+
> cert-manager will report an error on the CertificateRequest resource.
111+
>
112+
> ℹ️ If you specify a profile which the ACME server does not recognize,
113+
> cert-manager will report an error on the CertificateRequest resource.
114+
>
115+
> 📖 Read [ACME protocol extension for certificate profiles (IETF draft)][rfc] to learn more..
116+
117+
[rfc]: https://datatracker.ietf.org/doc/draft-aaron-acme-profiles/
118+
83119
### External Account Bindings
84120

85121
cert-manager supports using External Account Bindings with your ACME account.

content/docs/releases/release-notes/release-notes-1.18.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ cert-manager is the easiest way to automatically manage certificates in Kubernet
77

88
## Major Themes
99

10-
### ACME Certificate Profile Selection
10+
### ACME Certificate Profiles
1111

1212
cert-manager now supports the selection of ACME certificate profiles, allowing
1313
users to request different categories of certificates from their ACME
@@ -23,6 +23,8 @@ for their certificate management needs.
2323
[tlsserver]: https://letsencrypt.org/docs/profiles/#tlsserver
2424
[shortlived]: https://letsencrypt.org/docs/profiles/#shortlived
2525

26+
> 📖 Learn more by visiting the [ACME Issuer documentation](../../configuration/acme/README.md#acme-certificate-profiles).
27+
2628
### The default value of `Certificate.Spec.PrivateKey.RotationPolicy` is now `Always`
2729

2830
> ⚠️ Breaking change

content/docs/troubleshooting/acme.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,12 @@ $ kubectl get order <order-name> -ojsonpath='{.status.authorizations[x].url}'
122122
If the Order is not completing successfully, you can debug the challenges
123123
for the Order by running `kubectl describe` on the `Challenge` resource which is described in the following steps.
124124

125+
### Common errors
126+
127+
* `Issuer: strict decoding error: unknown field "spec.acme.profile"`: The `ClusterIssuer.spec.acme.profile` and `Issuer.spec.acme.profile` fields were added in cert-manager `>=v1.18.0`. You are probably trying to use the field with an older version of cert-manager.
128+
* `Failed to create Order: acme: certificate authority does not advertise a profile with name <profile-name>`: The ACME server supports [ACME Certificate Profiles](../configuration/acme/README.md#acme-certificate-profiles), but it does not have a profile matching the `profile` value in the `Issuer` or `ClusterIssuer`.
129+
* `Failed to create Order: acme: certificate authority does not support profiles`: The ACME server does not support [ACME Certificate Profiles](../configuration/acme/README.md#acme-certificate-profiles).
130+
125131
## 3. Troubleshooting Challenges
126132

127133
In order to determine why an ACME Order is not being finished, we can debug

content/docs/tutorials/acme/example/production-issuer.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ spec:
88
server: https://acme-v02.api.letsencrypt.org/directory
99
# Email address used for ACME registration
1010
11+
# The ACME certificate profile
12+
profile: tlsserver
1113
# Name of a secret used to store the ACME account private key
1214
privateKeySecretRef:
1315
name: letsencrypt-prod

content/docs/tutorials/acme/example/staging-issuer.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ spec:
88
server: https://acme-staging-v02.api.letsencrypt.org/directory
99
# Email address used for ACME registration
1010
11+
# The ACME certificate profile
12+
profile: tlsserver
1113
# Name of a secret used to store the ACME account private key
1214
privateKeySecretRef:
1315
name: letsencrypt-staging

content/docs/tutorials/acme/nginx-ingress.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ Metadata:
297297
Spec:
298298
Acme:
299299
300+
Profile: tlsserver
300301
Private Key Secret Ref:
301302
Key:
302303
Name: letsencrypt-staging

content/docs/tutorials/getting-started-with-cert-manager-on-google-kubernetes-engine-using-lets-encrypt-for-ingress-ssl/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ spec:
341341
acme:
342342
server: https://acme-staging-v02.api.letsencrypt.org/directory
343343
email: <email-address> # ❗ Replace this with your email address
344+
profile: tlsserver
344345
privateKeySecretRef:
345346
name: letsencrypt-staging
346347
solvers:
@@ -495,6 +496,7 @@ spec:
495496
acme:
496497
server: https://acme-v02.api.letsencrypt.org/directory
497498
email: <email-address> # ❗ Replace this with your email address
499+
profile: tlsserver
498500
privateKeySecretRef:
499501
name: letsencrypt-production
500502
solvers:

public/docs/tutorials/getting-started-aks-letsencrypt/clusterissuer-lets-encrypt-production.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ spec:
77
acme:
88
server: https://acme-v02.api.letsencrypt.org/directory
99
email: $EMAIL_ADDRESS
10+
profile: tlsserver
1011
privateKeySecretRef:
1112
name: letsencrypt-production
1213
solvers:

public/docs/tutorials/getting-started-aks-letsencrypt/clusterissuer-lets-encrypt-staging.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ spec:
77
acme:
88
server: https://acme-staging-v02.api.letsencrypt.org/directory
99
email: $EMAIL_ADDRESS
10+
profile: tlsserver
1011
privateKeySecretRef:
1112
name: letsencrypt-staging
1213
solvers:

public/docs/tutorials/getting-started-aws-letsencrypt/clusterissuer-lets-encrypt-production.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ spec:
77
acme:
88
server: https://acme-v02.api.letsencrypt.org/directory
99
email: $EMAIL_ADDRESS
10+
profile: tlsserver
1011
privateKeySecretRef:
1112
name: letsencrypt-production
1213
solvers:

0 commit comments

Comments
 (0)