Document ACME delayed challenge acceptance#2101
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
✅ Deploy Preview for cert-manager ready!Built without sensitive environment variables
To edit notification comments on pull requests, go to your Netlify project configuration. |
1b53647 to
bfca54d
Compare
c1fa7ac to
bca7d8f
Compare
Signed-off-by: Richard Wall <richard@the-moon.net>
Signed-off-by: Richard Wall <richard@the-moon.net>
Signed-off-by: Richard Wall <richard@the-moon.net>
Signed-off-by: Richard Wall <richard@the-moon.net>
Signed-off-by: Richard Wall <richard@the-moon.net> Signed-off-by: Richard Wall <richard.wall@cyberark.com>
bca7d8f to
c7aa448
Compare
wallrj-cyberark
left a comment
There was a problem hiding this comment.
The docs are clear and well-placed. Three points below, in descending order of priority.
On Copilot's finding about the YAML: the waitInsteadOfSelfCheck: 30s entry is at the correct indentation — it is a sibling of http01: within the solver list item, not nested inside it, which matches the API type definition. The text already says "You can set this field on either an http01 or dns01 solver entry", which makes the placement clear. No change needed there.
|
|
||
| A similar issue can also affect DNS01 if cert-manager can only query internal | ||
| DNS views while the ACME server validates against the public TXT record. | ||
| If this does work check if your cluster can see it too. It is important to test this from inside a Pod. If you get a connection error it is suggested to check the cluster's network configuration. |
There was a problem hiding this comment.
The DNS01 paragraph inserted immediately before this line (207–208) leaves If this does work check if your cluster can see it too. as a non-sequitur. That sentence was originally the continuation of the opening HTTP01 paragraph (First of all check if you can see the challenge URL from the public internet…), but after the insertion it reads as a follow-on to the DNS01 note.
Suggested fix: add a blank line between line 207 and this line so that If this does work… clearly starts a new paragraph and the reader understands this refers back to the challenge URL visibility check, not the DNS01 scenario:
A similar issue can also affect DNS01 if cert-manager can only query internal
DNS views while the ACME server validates against the public TXT record.
+
If this does work check if your cluster can see it too.| waitInsteadOfSelfCheck: 30s | ||
| ``` | ||
|
|
||
| This is an advanced escape hatch for cases where cert-manager cannot directly |
There was a problem hiding this comment.
As noted in the code review of the implementation PR, setting waitInsteadOfSelfCheck: 0s causes cert-manager to accept the challenge on the first reconcile after presentation — with no self-check and no wait — because the deadline is PresentedAt + 0 = PresentedAt, which is always in the past. This may be intentional for users who want a pure bypass, but it is not mentioned anywhere in the docs.
If the implementation PR adds a validation marker to reject zero/negative durations, this becomes moot. Otherwise, consider adding a brief note here, e.g.:
Setting this field to
0sskips the self-check and accepts immediately after presentation.
Users who write waitInsteadOfSelfCheck: 0s expecting some kind of no-op would be surprised to find their challenges accepted without any check.
There was a problem hiding this comment.
This was already addressed in the existing text (lines 138–143) which documents the 0 value behaviour and notes that negative durations are rejected by the validating webhook.
|
|
||
| - cert-manager presents the challenge as usual; | ||
| - cert-manager records the time of first presentation in `status.presentedAt`; | ||
| - cert-manager skips its own self-check; and |
There was a problem hiding this comment.
Nit: adding a DNS01 example (or a short mention of the equivalent YAML) would help readers who are in a split-horizon DNS scenario. The current text says the field works on either solver type, but the example only shows HTTP01. A comment like # or under dns01: instead of http01: next to waitInsteadOfSelfCheck: 30s in the code block would be a low-effort addition.
There was a problem hiding this comment.
Done — added a YAML comment in the example noting dns01: as an alternative in 777bd7d.
777bd7d to
885291f
Compare
- Explain that a value of 0 skips the self-check and asks the ACME server to validate immediately, relying on the server's own validation retries (RFC 8555 section 8.2). - Note that negative durations are rejected by the validating webhook. Aligns the docs with the final API behaviour in cert-manager/cert-manager#8858. Signed-off-by: Richard Wall <richard@the-moon.net> Signed-off-by: Richard Wall <richard.wall@cyberark.com> Co-authored-by: Claude <noreply@anthropic.com> Signed-off-by: Richard Wall <richard.wall@cyberark.com>
885291f to
99e4988
Compare
Preview:
Summary
This PR documents the ACME
waitInsteadOfSelfChecksolver option for the next minor cert-manager release.It is documentation for cert-manager/cert-manager#8858, which supersedes cert-manager/cert-manager#8794 after review feedback that the feature should model an explicit self-check bypass rather than a hybrid self-check-plus-delay fallback. cert-manager/cert-manager#8858 is itself a follow-up to the earlier closed attempt in cert-manager/cert-manager#5006.
The docs explain:
waitInsteadOfSelfCheckis set (self-check is skipped; cert-manager waits the configured duration fromstatus.presentedAtbefore asking the ACME server to validate);0is permitted (skip the self-check and ask the ACME server to validate immediately, relying on the server's own validation retries per RFC 8555 section 8.2), and that negative durations are rejected by the validating webhook;http01ordns01solver entries;>= v1.21.0;Part of cert-manager/cert-manager#1292.
Cross-reference: cert-manager/cert-manager#8858.