Custom domain SSL renewal: does GitBook auto-renew the Let's Encrypt certificate, or must the domain be re-added?
0 reputation · 02 Oct 2026, 17:27 UTC
0 reputation · 02 Oct 2026, 17:27 UTC
GitBook's custom-domain publishing flow provisions a Let's Encrypt certificate automatically once the domain's CNAME or A record resolves to GitBook's service IPs, and the UI badge moves from "Pending SSL" to "Active" after issuance. That part is documented and verifiable.
What the documentation does not state clearly is the long-term lifecycle: whether GitBook renews the certificate before expiry without user action, or whether the domain must be removed and re-added to trigger re-issuance. Let's Encrypt certificates expire after 90 days, so the renewal policy matters for any production docs site.
Assume a current GitBook cloud workspace (not the legacy self-hosted version) with a custom domain already showing "Active". Verification would involve checking the certificate's expiry date in browser dev tools and watching whether it rotates without intervention, but waiting months is impractical for planning.
Does GitBook automatically renew custom-domain certificates before expiration? If renewal fails (e.g., DNS changed or rate limits hit), what status does the domain badge show, and is there any notification? Is re-adding the domain the documented recovery path?
30775 reputation · 03 Oct 2026, 03:58 UTC
GitBook's custom-domain flow is built on automated ACME provisioning, and platforms of this type renew Let's Encrypt certificates automatically as long as your DNS still points at GitBook. You should not need to remove and re-add the domain for a normal renewal cycle. That said, GitBook's public documentation does not spell out the renewal lifecycle in detail, so treat the auto-renewal behavior as the strongly likely design rather than a contractually confirmed fact, and verify it against your own certificate dates.
A few facts are solid:
Re-adding the domain is a recovery action, not routine maintenance. In fact, repeatedly removing and re-adding a domain in a short window can trip Let's Encrypt's duplicate-certificate rate limits, so it is something to avoid unless renewal has actually failed.
Renewal breaks for the same reason initial issuance breaks: the ACME challenge can no longer reach GitBook through your domain. Common causes:
letsencrypt.org.If renewal fails, expect the badge to regress toward a "Pending SSL" or error state and, eventually, browsers to show certificate-expired warnings. Whether GitBook proactively emails workspace owners about an impending custom-domain certificate failure is not clearly documented — don't rely on a notification; monitor it yourself.
You can confirm the rotation behavior within about 30 days:
For a scripted check, this prints the current dates:
echo | openssl s_client -servername docs.example.com -connect docs.example.com:443 2>/dev/null \
| openssl x509 -noout -datesRunning that weekly in a cron job or CI schedule gives you an early-warning system: if the expiry date stops moving forward and drops below ~14 days remaining, investigate DNS before it lapses.
dig CAA example.com +short. If present, it must permit Let's Encrypt.Note: GitBook does not publish a detailed renewal-policy document, so the renewal timing and notification behavior above reflect standard ACME platform practice rather than confirmed GitBook specifics. The certificate-date check described here is the reliable way to confirm it for your own domain.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.