Old clients: certificate has expired — Let's Encrypt chain uses expired DST Root CA X3 (OpenSSL 1.0.x, Android < 7.1.1)
Older systems fail to validate Let's Encrypt certificates because their trust store lacks ISRG Root X1 and relies on the expired cross-sign.
DST Root CA X3 expiredcertificate has expired Let's Encrypt old clientsISRG Root X1 not trustedLet's Encrypt root expiry OpenSSL 1.0.2expired DST Root CA X3 certificate Meaning
After 30 Sept 2021 the DST Root CA X3 expired. OpenSSL 1.0.x clients treat the expired cross-signed chain as invalid even when a newer path exists. Fix: update client OS/OpenSSL/CA bundle, or serve a chain without the expired cross-sign (the --preferred-chain "ISRG Root X1" option), accepting that very old Android devices fail.
Common causes
- OpenSSL 1.0.x clients
- Android below 7.1.1
- Old embedded devices lacking ISRG Root X1
- Outdated ca-certificates
- Server serving the cross-signed chain
⚡ Quick fix
- Update OpenSSL/ca-certificates on the client
- Use
certbot --preferred-chain "ISRG Root X1"on the server - Remove DST Root CA X3 from the client trust store (
dpkg-reconfigure ca-certificates)
Detailed fix by platform
Linux
sudo update-ca-certificates --fresh; checkopenssl version
How to diagnose
- Client — OpenSSL version/OS?
- Chain — Cross-sign sent?
- Trust — ISRG Root X1 present?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- DNS problem: NXDOMAIN looking up A Certbot: Detail: DNS problem: NXDOMAIN looking up A for www.example.com - check that a DNS record exists for this domain
- ERR_CERT_DATE_INVALID NET::ERR_CERT_DATE_INVALID (certificate expired)
- SEC_ERROR_EXPIRED_CERTIFICATE Firefox: Peer's Certificate has expired. Error code: SEC_ERROR_EXPIRED_CERTIFICATE
Most viewed in SSL / TLS
- NET::ERR_CERT_COMMON_NAME_INVALID NET::ERR_CERT_COMMON_NAME_INVALID: Your connection is not private (certificate is for a different domain)
- Challenge failed for domain Let’s Encrypt / Certbot: Challenge failed for domain example.com — Invalid response from http://example.com/.well-known/acme-challenge/x: 404
- no start line OpenSSL: unable to load certificate / PEM routines:get_name:no start line (key values mismatch)
Other ways to find it
Where this error sits
Origin: Network. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 4 Nov 2026