What Is an SSL Certificate Chain? Explained Simply
Abhay Khant
Jan 1, 1970 • 10 min read
An SSL certificate chain is the ordered sequence of certificates that connects your site's certificate to a root certificate your visitor's browser already trusts. Every HTTPS handshake depends on it. When the chain is complete, you get the padlock and a silent handshake. When one link goes missing, browsers refuse the connection and command-line clients fail with error codes nobody enjoys decoding.
Certificate lifetimes are shrinking fast. The CA/Browser Forum's Baseline Requirements cap new TLS certificates at 200 days from March 15, 2026, dropping to 100 days in 2027 and 47 days by 2029. More renewals mean more chances to ship a broken chain. You can check your certificate chain in the browser whenever you like; this article explains what that check actually verifies.
Key Takeaways
- A chain runs leaf, then intermediate, then root. Browsers trust your certificate only if the path ends at a root already in their trust store.
- Servers send the leaf and intermediates, never the root. The client completes the path on its own.
- The classic chain break is a missing intermediate, surfacing as "unable to get local issuer certificate."
- Maximum validity drops to 200 days in March 2026 and 47 days by 2029 (CA/Browser Forum), so automated chain handling is becoming mandatory.
What is an SSL certificate chain?
An SSL certificate chain, formally a certification path, is your certificate signed by an intermediate CA, which is itself signed by a root CA. RFC 5280, the X.509 standard that governs public key infrastructure, defines the path as "a certificate of the public key owner (the end entity) signed by one CA, and zero or more additional certificates of CAs signed by other CAs" (IETF, 2008).
Walk it from the bottom up. Your domain's certificate is the leaf. Its issuer field names an intermediate CA. That intermediate's issuer names either another intermediate or a root. A root signs itself; nothing sits above it. Your browser ships with a local list of these self-signed roots, its trust store, and that list is where all trust ultimately originates.
If you're still building your mental model of certificates themselves, start with our guide to what an SSL certificate is. This article goes one level deeper, into how trust actually gets established between strangers.
+---------------------+
| Root CA | ISRG Root X1: lives in your OS or browser
| (self-signed) | trust store; offline key; decades of life
+----------+----------+
| signs
+----------v----------+
| Intermediate CA | e.g. Let's Encrypt YE1: online key;
| | revocable; disclosed in the CCADB
+----------+----------+
| signs
+----------v----------+
| Leaf certificate | www.example.com: scoped to your
| | domain, short-lived
+---------------------+
Real hierarchies look exactly like this. Let's Encrypt's published chain of trust shows its default RSA path running from your certificate through the YR1 intermediate up to ISRG Root X1, and its default ECDSA path passing through YE1, Root YE, and ISRG Root X2 before terminating at ISRG Root X1.
Default RSA chain: your certificate <- YR1 <- Root YR <- ISRG Root X1
Default ECDSA chain: your certificate <- YE1 <- Root YE <- ISRG Root X2 <- ISRG Root X1
Read each arrow as is signed by.
How do root, intermediate, and leaf certificates differ?
The three tiers differ in where the private key lives, how long the certificate lasts, and who audits it. Mozilla's Root Store Policy v3.1, effective July 1, 2026, requires root inclusion to be backed by "an auditor-witnessed root key generation ceremony report," while intermediate CAs must be disclosed in the CCADB within 7 days of creation and before any issuance (Mozilla, 2026).
Root certificates: offline keys with decade-long lifespans
Roots are the anchors. ISRG Root X1, the root behind most Let's Encrypt certificates, is an RSA 4096 key generated on June 4, 2015 and trusted until June 4, 2030, roughly fifteen years on a single key (Let's Encrypt, 2026). Mozilla's policy demands proof that a root key pair was generated within five years of the inclusion request, and CAs keep root keys in hardware security modules, offline, physically separated from the machinery that faces the internet.
Intermediate certificates: online, revocable workhorses
Intermediates do the daily signing. Let's Encrypt currently issues from four of them: YE1 and YE2, both ECDSA P-384, plus YR1 and YR2, both RSA 2048, all valid until September 2, 2028. Retired intermediates R10 through R14 and E5 through E9 remain valid until March 12, 2027 so existing certificates keep working. Because intermediates face the internet, they're built to be replaced fast: Mozilla requires CRLs to update at least every 7 days and OCSP responses at least every 4 days.
Leaf certificates: your domain's short-lived ID
The leaf, or end-entity certificate, is the only one scoped to your domain, listing the hostnames it covers. It's also the tier shrinking fastest. The CA/Browser Forum's Baseline Requirements cap leaf validity at 200 days effective March 15, 2026, 100 days effective March 15, 2027, and 47 days effective March 15, 2029 (Section 6.3.2).
| Tier | Key location | Typical lifetime | Revocation and disclosure |
|---|---|---|---|
| Root | Offline HSM, air-gapped | Decades (ISRG Root X1: 2015 to 2030) | No parent exists to revoke it; trust stores must remove it. Inclusion requires an auditor-witnessed key ceremony |
| Intermediate | Online, internet-facing | Years (Let's Encrypt YE/YR: through September 2028) | Revocable; must be disclosed in the CCADB within 7 days of creation |
| Leaf (end-entity) | Your server | 200 days now, 47 by March 2029 | Revocable via CRL or OCSP; scoped to your hostnames only |
How does certificate chain verification work?
Verification is path building, and it runs on your visitor's machine. The client takes the leaf, looks up who signed it, checks that signature, then repeats the step for each issuer until it lands on a self-signed root from its local trust store. RFC 5280 Section 6.1 specifies this as the Basic Path Validation algorithm, and its Basic Constraints extension carries the pathLenConstraint field, which gives "the maximum number of non-self-issued intermediate certificates that may follow" a certificate in a valid path (IETF, 2008). That field is the theoretical ceiling on how deep a chain can go.
On the wire, TLS 1.3 keeps the ordering rules simple. The server's Certificate message lists its own certificate first, and each additional certificate certifies the one before it, forming "a chain of trust leading from the host certificate to a trusted certificate that has been pre-installed on the client" (The Illustrated TLS 1.3 Connection). The root is never sent. Shipping it would waste bytes, since the client already holds it. These rules live in Section 4.4.2 of the TLS 1.3 specification, refreshed in July 2026 by RFC 9846, which obsoletes RFC 8446 with a backward-compatible minor update.
This behavior matters at scale. TLS 1.3 now covers 95.68% of global browser usage as of July 2026, so the modern handshake pattern, leaf first, intermediates attached, root omitted, is the norm rather than the exception. Chain details even feed technology fingerprinting for developers: the certificate a site presents is one more signal about the stack behind it.
One config note: Nginx, Apache, and every ACME client distinguish cert.pem, the leaf alone, from fullchain.pem, the leaf plus its intermediates. Serve the full chain file. Deploying cert.pem by itself is the classic way sites end up with a broken one.
Why doesn't the CA sign your certificate with the root?
Because the root is the one key that must never touch the internet, and the intermediate is the one key designed to be thrown away. Mozilla's Root Store Policy forces roots through auditor-witnessed generation ceremonies precisely because there's no recovery if a root key leaks: no parent certificate exists to revoke it. A compromised root turns every certificate beneath it into suspect material until trust stores remove it, stranding millions of sites at once.
Intermediates exist to absorb that risk. Certificate signing runs online, at high volume, on internet-facing infrastructure, and that machinery gets attacked constantly. If an intermediate key leaks, the CA revokes it, stands up a replacement, and re-issues affected subscriber certificates within days. The revocation plumbing has to move fast by rule: CRLs must update at least every 7 days and OCSP at least every 4 days under Mozilla's policy (Mozilla Root Store Policy, 2026).
So the hierarchy you see in a certificate viewer isn't bureaucracy. It's insurance: decades of accumulated trust parked in an offline key, with a disposable, revocable key doing the daily work.
Cross-signed certificates: two valid chains for one site
A cross-signed certificate is one CA key holding certificates from two different parents, which creates two valid chains for the same site. Let's Encrypt puts the concept better than anyone: "a CA is most correctly thought of as a key and a name: any given CA may be represented by multiple certificates which all contain the same Subject and Public Key Information" (Let's Encrypt, 2026).
Why would a CA bother? The live example is ISRG Root X2, an ECDSA P-384 root generated on September 4, 2020 and trusted until September 4, 2035. It's cross-signed by ISRG Root X1, so browsers that have never heard of X2 can still validate through X1. Newer roots buy modern algorithms; older roots lend their installed base.
The trade-off is explicit in Let's Encrypt's documentation: "chains which terminate at ISRG Root X1 have the largest size but also the greatest compatibility with older clients." Chain selection is therefore a payload decision, not just a compatibility checkbox. Terminating at X1 ships an extra cross-sign certificate in every single handshake, adding bytes to every fresh connection while buying support for clients from another era. ACME subscribers can make that call deliberately with certbot's --preferred-chain flag instead of accepting the default.
What happens when a certificate chain breaks?
The classic broken chain is a missing intermediate, and the failure text is unmistakable. OpenSSL reports X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY, defined verbatim as "The issuer certificate could not be found: this occurs if the issuer certificate of an untrusted certificate cannot be found" (OpenSSL's verification error reference). In plain terms: your leaf says "signed by YE1," your server never sent YE1, and the client can't complete the path on its own.
Browsers translate the same failure into the "your connection is not private" warning, because path building simply cannot finish. A rarer failure mode is depth: X509_V_ERR_CERT_CHAIN_TOO_LONG fires when "the certificate chain length is greater than the supplied maximum depth," which is the pathLenConstraint ceiling from the verification section doing its job.
In our experience, nearly every broken production chain we've debugged traced back to a renewal or migration where someone deployed cert.pem instead of fullchain.pem, or where a retired intermediate rotated out of a bundle. The certificate itself was always fine; the packaging around it was wrong.
The shrinking validity schedule raises the stakes. At 200 days, then 100, then 47 by March 2029 (CA/Browser Forum), manual renewal stops being viable well before the 47-day mark. Every automated renewal is one more chance for a packaging slip, which is why a post-deploy chain check belongs in your pipeline.
How do you view and verify a certificate chain?
You can inspect any chain in under a minute using a browser, OpenSSL, or a zero-install checker. The openssl verify command accepts -untrusted for "certificates to use for chain building" and -show_chain to print the path it built, letting you replicate a browser's decision locally.
- Browser check: Click the padlock and open the certificate viewer. Chrome, Firefox, and Safari all show the full hierarchy with validity dates.
- Zero-install check: Paste your hostname into ToolSura's free SSL certificate checker. It reports the complete chain back to a trusted root, runs entirely in your browser, and needs no signup.
- Dump the wire: Run
openssl s_client -showcerts -connect example.com:443 -servername example.comto see the chain exactly as your server transmits it: leaf first, intermediates attached, root absent. - Rebuild locally: Save the intermediate from step 3 as
intermediates.pem, then runopenssl verify -show_chain -untrusted intermediates.pem cert.pem. OpenSSL prints each certificate in the path it built, tagged with its depth level, so you can see exactly where validation stopped if anything is off. - Deep audit: Qualys SSL Labs' server test grades the whole TLS configuration, chain included, for a second opinion on protocol and cipher choices.
The bottom line: trust is a chain, not a certificate
An SSL certificate chain is the mechanism that turns a stranger's public key into a trusted identity. Leaf, intermediates, root: each signature vouches for the next, and the path ends in a root your visitor already carries. Roots stay offline for a decade or more, intermediates stay online and revocable, and leaves keep getting shorter, with 200 days now and 47 coming by 2029. When one link goes missing, the failure is loud and unambiguous, so verify after every renewal. Sixty seconds with ToolSura's SSL checker after your next deploy is the cheapest insurance your HTTPS setup will ever get.
Related Reading
- Need the ground floor first? Our guide to what an SSL certificate is covers issuance, certificate fields, and the basics this article builds on.
- Check your certificate chain in the browser with ToolSura's SSL checker: it reports the complete chain back to a trusted root, with nothing to install.
- A different kind of chain: our redirect chain guide explains HTTP hop chains, which have nothing to do with certificates but plenty to do with the migrations where chains often break. When you are auditing a migration, the URL redirect checker catches the other half of the damage.
- Trust through signatures shows up everywhere. See how JWT works for the same identity-binding problem in miniature, tokens instead of certificates, and decode a JWT token online to inspect a real one.


