Understand Let's Encrypt test certificate sites
mainLet's Encrypt hosts specialized test websites for each of its root certificates to allow developers to test how their clients handle different certificate states. For every root certificate, three distinct types of sites are maintained:
- Valid: A standard site with a valid certificate.
- Expired: A site serving a certificate that has passed its expiry date.
- Revoked: A site serving a certificate that has been revoked via ACME but is not yet expired. This is a critical test case for ensuring clients correctly handle revocation without relying on expiration.
These sites are useful for testing browser revocation checking (like Firefox's CRLite) and terminal HTTP clients.
Accessing Test Sites
You can access the test sites for the four current root certificates (X1, X2, YE, YR) via the following patterns:
| Root | Valid | Expired | Revoked |
|---|---|---|---|
| Root X1 | https://valid.x1.test-certs.letsencrypt.org | https://expired.x1.test-certs.letsencrypt.org | https://revoked.x1.test-certs.letsencrypt.org |
| Root X2 | https://valid.x2.test-certs.letsencrypt.org | https://expired.x2.test-certs.letsencrypt.org | https://revoked.x2.test-certs.letsencrypt.org |
| Root YE | https://valid.ye.test-certs.letsencrypt.org | https://expired.ye.test-certs.letsencrypt.org | https://revoked.ye.test-certs.letsencrypt.org |
| Root YR | https://valid.yr.test-certs.letsencrypt.org | https://expired.yr.test-certs.letsencrypt.org | https://revoked.yr.test-certs.letsencrypt.org |
Content Negotiation
To make testing easier for terminal clients (like curl), the sites support content negotiation via URL parameters:
- Use
?txtto request the plain text version (includes ASCII art). - Use
?htmlto request the HTML version. - If no
Acceptheader is provided, the server defaults to plain text to avoid spewing HTML into a terminal.