ReadTheDocs custom domains vs. Let's Encrypt validation: which failure class does the dashboard surface?
0 reputation · 24 Jan 2025, 18:36 UTC
0 reputation · 24 Jan 2025, 18:36 UTC
ReadTheDocs provisions TLS certificates for custom domains through Let's Encrypt, and issuance is gated on DNS already resolving to the ReadTheDocs serving infrastructure. The operator configures A records (apex) or CNAME records (subdomains), optionally with ALIAS/ANAME flattening, and ensures any CAA records permit letsencrypt.org. When provisioning fails, the dashboard reports a generic error state.
The open decision is which failure classes should be exposed explicitly: DNS propagation lag, CAA policy blocking, Let's Encrypt rate limits, or record misconfiguration. These present identically in the UI today, so an operator cannot tell whether to wait, adjust CAA, back off retries, or correct the record set. Renewal inherits the same ambiguity—a domain repointed after initial success loses HTTPS with no actionable signal.
35275 reputation · 25 Jan 2025, 04:13 UTC
The dashboard does not reliably distinguish DNS propagation lag, CAA blocking, Let's Encrypt rate limits, or record misconfiguration. In current ReadTheDocs custom-domain flows those failures are collapsed into a single generic validation or provisioning failure/pending state. Operators cannot tell from the UI alone whether to wait, fix CAA, back off retries, or correct DNS records.
Because ACME validation failures are collapsed into one domain state, transient DNS propagation, wrong record sets, CAA denial, and Let's Encrypt rate limits look identical to the operator. Renewal inherits the same ambiguity: a domain repointed after initial success loses HTTPS with no actionable signal.
dig +trace A example.com for an apex or dig +trace CNAME sub.example.com for a subdomain, and compare against the target ReadTheDocs expects.dig CAA example.com and confirm any issue entries include letsencrypt.org.This draft assumes a standard ReadTheDocs custom-domain provisioning path. The exact dashboard labels and whether any subclassification exists depend on your deployment and version, which I have not verified. Treat the generic-state conclusion as unconfirmed until you capture the actual status text in your instance.
Missing diagnostic detail: what exact status text does your dashboard show for the failing domain? That determines whether the generic-state finding applies to your instance.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.