What Is an SSL Certificate Chain? Order, Check & Fix

Key takeaway

An SSL certificate chain is the list of certificates that links a website's certificate to a root certificate authority your browser already trusts: the site's own (leaf) certificate, one or more intermediates, and a root in the browser's list. The server must send the leaf and the intermediates, leaf first; of 12 big sites we checked, each sent 2 to 4 certificates. If an intermediate is missing, apps and API clients fail with errors like "unable to get local issuer certificate" or "unable to verify the first certificate", even when Chrome still loads the page.

Check it now

SSL certificate chain diagram showing root, intermediate, and leaf certificates connected in a chain of trust
SSL certificate chain diagram showing root, intermediate, and leaf certificates connected in a chain of trust
Start reading
  1. What Is an SSL Certificate Chain?
  2. The Three Kinds of Certificate in a Chain
  3. How the Chain of Trust Works
  4. Real Chains: What 12 Big Sites Send
  5. Why Intermediate Certificates Exist
  6. How to Check Your SSL Certificate Chain
  7. Common Certificate Chain Errors and How to Fix Them
  8. Certificate Chain Best Practices
  9. Frequently Asked Questions

What Is an SSL Certificate Chain?

An SSL certificate chain (also called a chain of trust or certification path) is the ordered list of digital certificates that connects your website's SSL/TLS certificate back to a trusted root Certificate Authority (CA). Each certificate in the chain is digitally signed by the one above it, creating a verifiable path of trust from your server all the way up to a root CA that browsers already trust.

Think of it like a chain of endorsements. Your server certificate says "I am example.com." The intermediate CA says "I vouch for example.com's certificate." The root CA says "I vouch for that intermediate." Your browser already trusts the root CA, so by following the chain of signatures, it trusts your server too.

When you visit an HTTPS site, your browser traces this chain in milliseconds. If every link checks out, the page loads with no warning. If a link is missing, expired or untrusted, you get a security warning such as NET::ERR_CERT_AUTHORITY_INVALID instead.

See a site's certificate chain

Every chain has three kinds of certificate, though a server may send more than one intermediate:

Root certificateIntermediate certificateLeaf (server) certificate
Signed byItself (self-signed)A root (or another intermediate)An intermediate
Where it livesThe browser's or OS's root listSent by your serverSent by your server
Typical lifetimeCertificates run 20-25 years, but browsers trust a root for about 15 (ISRG Root X1: 2015 to 2030)A few years (Let's Encrypt's YE1: until 2028)At most 200 days for certificates issued since March 2026 (Let's Encrypt: 90)
If its key leaksEvery certificate under it is at riskRevoke that intermediateRevoke and reissue
How manyAbout 100 in Chrome's root listThousandsHundreds of millions

Root Certificate

The root certificate is the trust anchor at the top of the chain. It is self-signed, meaning the Certificate Authority signed its own certificate. Root certificates are pre-installed in your browser and operating system — this collection is called the trust store.

Chrome's own root list holds about 100 roots (Chrome Root Store); Mozilla, Apple and Microsoft keep their own lists. Organisations such as DigiCert, Let's Encrypt (ISRG), Sectigo, GlobalSign and Google Trust Services run roots. Because root keys are so valuable, CAs keep them offline in hardware security modules and use them only to sign intermediates.

Intermediate Certificate

Intermediate certificates sit between the root and your server certificate. The root CA signs the intermediate certificate, and the intermediate CA then signs end-entity (server) certificates. Most CAs use one or two intermediates.

Your web server must send intermediate certificates along with your leaf certificate during the TLS handshake. Chrome can download a missing intermediate and Firefox preloads them, but apps, API clients and older Android devices have neither, so for them the chain breaks.

Leaf Certificate (Server Certificate)

The leaf certificate (also called end-entity or server certificate) is the certificate installed on your web server. It contains your domain name, your public key, the validity period, and information about the issuer (the intermediate CA that signed it).

This is the first certificate your browser receives during the TLS handshake. The browser then works its way up the chain, verifying each signature until it reaches a trusted root.

How the Chain of Trust Works

When your browser connects to a website over HTTPS, the TLS handshake triggers a chain verification process that happens in milliseconds:

  • The server sends its certificates — the leaf, then the intermediates.
  • The browser builds a path — from the leaf up to a root in its own list. If an intermediate is missing, Chrome downloads it from the address written in the certificate (AIA), and Firefox uses its own preloaded set; many other clients just fail.
  • Signatures are checked — each certificate must be signed by the key of the one above it.
  • The root is checked — the path must end at a root in the browser's list. An unknown root fails.
  • Validity is checked — every certificate must be within its dates and not revoked, and the leaf must cover the name in the address bar.

Real Chains: What 12 Big Sites Send

We asked 12 of the biggest sites for their chains on 27 October 2026 (openssl s_client -showcerts, from two locations). None sent just a leaf, and several sent extra cross-signed certificates so that older devices can still reach a root they know. What a server sends can change with your TLS version, whether your client supports ECDSA, and which CDN location answers: facebook.com, for example, sent 3 certificates over TLS 1.2.

SiteCertificates sentTop of the chain it sends
facebook.com, reddit.com, netflix.com2A DigiCert intermediate (the root comes from your device)
google.com, youtube.com, cloudflare.com3GTS Root R4, cross-signed by GlobalSign for older devices
amazon.com3DigiCert Global Root G2, cross-signed by an old VeriSign root
apple.com3DigiCert Global Root G3 itself (the self-signed root)
github.com3A Sectigo root, cross-signed by USERTrust
microsoft.com4Microsoft TLS RSA Root G2, cross-signed by DigiCert Global Root G2, plus that DigiCert root
wikipedia.org, letsencrypt.org4ISRG Root X2, cross-signed by ISRG Root X1

What Happens After Verification

If every check passes, the connection goes ahead. If any one fails, even on an intermediate, the browser shows a warning such as "Your connection is not private" with a code like NET::ERR_CERT_AUTHORITY_INVALID. (Failures before any certificate is looked at, during the TLS handshake itself, show other codes: ERR_SSL_PROTOCOL_ERROR or ERR_SSL_VERSION_OR_CIPHER_MISMATCH.)

This is why the entire chain matters, not just the leaf certificate. An expired intermediate breaks HTTPS just like an expired server certificate, unless the client can build another path around it.

Why Intermediate Certificates Exist

Root CAs could theoretically sign every server certificate directly, skipping intermediates entirely. But there are three critical reasons why they don't:

  • Security isolation — Root CA private keys are kept offline in HSMs inside physically secured vaults. They are used only to sign intermediates, not millions of individual server certificates. This drastically reduces the risk of the root key being compromised.
  • Damage containment — If an intermediate CA is compromised, only that intermediate's certificates are affected. The root CA can revoke the compromised intermediate and issue a new one — without invalidating every certificate it has ever issued.
  • Operational flexibility — CAs use different intermediates for different purposes: one for DV certificates, another for EV, separate ones for different regions or key algorithms (RSA vs ECDSA).

How to Check Your SSL Certificate Chain

There are three ways to inspect a website's certificate chain, from command-line tools to browser-based checks.

Method 1: OpenSSL (Command Line)

The openssl command is the most detailed way to inspect a certificate chain. Run this in your terminal:

bash
# List each certificate the server sends (s: subject, i: issuer)
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null | grep -E ' [si]:'

# Then read the verdict
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | grep -m1 'Verify return code'

Method 2: Browser Certificate Viewer

Every major browser shows the chain it built (which may differ from what the server sent, if it fetched a missing intermediate itself):

  • Chrome: click the icon left of the address → Connection is secure → Certificate is valid, then open the Details tab to see the certificate hierarchy
  • Edge: click the padlock → Connection is secure → the certificate icon at the top of the panel
  • Firefox: click the padlock → Connection secure → More information → View Certificate; each certificate in the chain gets its own tab
  • Safari (18.4 and later): choose Safari > Connection Security Details in the menu bar (Apple); on iPhone, tap the left side of the address field → Privacy & Security → Connection Security Details

Method 3: DNS Robot SSL Checker

The quickest check from outside your network is our SSL Checker: it shows the chain the server sends, whether the Mozilla, Chrome, Apple and Microsoft root lists each trust it, a warning when the chain is incomplete, and every certificate's dates. For sites behind Cloudflare it reads the certificate from public CT logs, so there the chain the server sends isn't checked.

Common Certificate Chain Errors and How to Fix Them

Certificate chain problems are one of the most frequent causes of HTTPS errors. Here are the errors you are most likely to encounter and how to resolve each one.

Missing Intermediate Certificate

Error message: "unable to get local issuer certificate" (curl, Python, PHP), "unable to verify the first certificate" (Node.js) or "incomplete certificate chain"

Cause: the server sends only the leaf certificate. Chrome often repairs this by downloading the intermediate itself (so does Apple's verifier), so the site may look fine in a browser while curl on Linux, Python, Java, payment callbacks and many apps fail.

Fix: send the intermediates with the leaf. With Let's Encrypt, point your server at fullchain.pem, not cert.pem; with another CA, download its intermediate and put it after your certificate in one file:

bash
cat your-domain.crt intermediate.crt > fullchain.crt

Self-Signed Certificate in Chain

Error message: "self-signed certificate in certificate chain" (OpenSSL error 19)

Cause: the chain ends in a root the client doesn't trust: a private or company CA, or a proxy or antivirus that re-signs traffic with its own root. Sending a root the client does trust is harmless, just unnecessary.

Fix: use a certificate from a public CA for public sites, or install the private root on the clients that need it. Leaving the root out of the server's chain is tidy but won't fix this error.

Wrong Certificate Order

Error message: chain verification fails in some clients, or they report the certificate as not trusted.

Cause: the certificates in the chain file are in the wrong order. TLS 1.3 requires the server's own certificate first and asks for the rest in order, while telling clients to cope with other orders (RFC 8446 §4.4.2); older or stricter clients may not.

Fix: put the leaf certificate first, then each intermediate, starting with the one that signed your leaf.

Expired Certificate in Chain

Error message: "certificate has expired" — but your leaf certificate's expiry date looks fine.

Cause: a certificate higher up the chain has expired. The best-known case: IdenTrust's DST Root CA X3, which cross-signed Let's Encrypt's root, expired on 30 September 2021, and devices that didn't trust ISRG Root X1 (and clients on OpenSSL 1.0.x) began failing on Let's Encrypt sites.

Fix: Download the current intermediate certificate from your CA and replace the old one. Then use our SSL Checker to verify the updated chain.

Certificate Chain Best Practices

  • Always send the intermediates — don't count on browsers repairing the chain; apps and API clients won't.
  • The root is optional — clients use their own copy, so sending a root they trust only adds bytes; a cross-signed root for older devices is a deliberate exception.
  • Keep the order — leaf first, then the intermediates from the one that signed your leaf upwards.
  • Automate renewal — certificates issued since March 2026 last at most 200 days, falling to 100 in March 2027, and Let's Encrypt moves to 64-day certificates in February 2027.
  • Check after every renewal or move — a CA can switch intermediates between renewals. Run the site through the SSL Checker afterwards.
  • Watch every name — www, the bare domain and each subdomain can be served by different certificates and chains. The Subdomain Finder lists the names your certificates have covered, from public certificate logs.

Check your SSL certificate chain now

DNS Robot's free SSL Checker shows the chain a site sends, whether Mozilla, Chrome, Apple and Microsoft each trust it, a missing-intermediate warning, and every certificate's dates. For sites behind Cloudflare it reads the certificate from public CT logs instead.

Sources

  1. Chains of trust (Let's Encrypt certificates), Let's Encrypt
  2. Chrome Root Store, Chromium
  3. RFC 8446 §4.4.2: Certificate, IETF
  4. Ending OCSP support in 2025, Let's Encrypt
  5. Avoid fraud by using encrypted websites in Safari on Mac, Apple
  6. Mozilla Root Store Policy, Mozilla

Frequently Asked Questions

What is an SSL certificate chain?

It's the list of certificates that links a website's certificate to a root certificate authority your browser already trusts: the site's own leaf certificate, one or more intermediates, and a root from the browser's list. Each one is signed by the one above it.

How many certificates are in a typical SSL chain?

Three kinds (leaf, intermediate, root), but servers send 2 to 4 certificates: the leaf plus one intermediate, sometimes with cross-signed roots for older devices. Let's Encrypt's ECDSA chain, for example, runs from an intermediate such as YE2 to Root YE, which is cross-signed by ISRG Root X2, which is cross-signed by ISRG Root X1.

Do I need to install intermediate certificates on my server?

Yes. Your server must send the leaf certificate and all intermediate certificates during the TLS handshake. If they're missing, the chain breaks in apps, API clients and older Android devices, even if Chrome still loads the page by downloading the intermediate itself.

What happens if the certificate chain is broken?

Clients that can't build the chain refuse the connection, often with NET::ERR_CERT_AUTHORITY_INVALID in browsers or "unable to get local issuer certificate" in apps. Chrome can repair a missing intermediate by downloading it, so a broken chain may only fail in other clients.

Should I include the root certificate in my server's chain?

You don't need to: clients use their own copy of the root, so sending it only adds bytes. It doesn't cause errors when the client trusts it. Big sites sometimes send a cross-signed root on purpose so older devices can still build a path.

How do I fix 'unable to verify the first certificate'?

Your server isn't sending its intermediate certificate. With Let's Encrypt, point the server at fullchain.pem instead of cert.pem; with another CA, put its intermediate after your certificate in one file. Reload the server and check it with an SSL checker.

What does 'unable to get local issuer certificate' mean?

OpenSSL-based clients (curl, Python, PHP, Git) say it when they can't find the certificate that issued the last one they have. Usually the server isn't sending its intermediate; sometimes the client's own CA bundle is missing or outdated, or a proxy re-signs traffic with its own root. If an SSL checker shows the site's chain complete, fix the client side.

What is the difference between root and intermediate certificates?

A root is self-signed, lives in the browser's or operating system's root list and is trusted for about 15 years (its certificate often runs 20-25). An intermediate is signed by a root, must be sent by your server and lasts a few years. Intermediates exist so the root's key can stay offline.

How do I check my SSL certificate chain?

Run openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -showcerts, look at the certificate details in your browser (Chrome: Connection is secure → Certificate is valid → Details), or use an online SSL checker that shows the chain the server sends.

About the author

Shaik Vahid

Founder of DNS Robot. Vahid spent years in web hosting support fixing domains, DNS records, SSL certificates and email delivery for customers. He builds DNS Robot's tools and writes these guides from the errors people actually hit.

SSL Certificate Check

Verify SSL certificate validity and security details