What Is an SSL Certificate Chain?
An SSL certificate chain β also called a certificate trust chain or chain of trust β is a sequence of certificates that connects your website's certificate back to a root Certificate Authority (CA) that browsers inherently trust.
Think of it like a chain of vouchers: your site's certificate is vouched for by an intermediate CA, which is in turn vouched for by a root CA. Browsers come pre-installed with a list of trusted root CAs. If a browser can follow the chain from your certificate up to a trusted root without any gaps, the connection is trusted. If any link in the chain is missing, the browser shows a security error β even if your certificate itself is perfectly valid.
π‘ New to SSL certificates? Before diving into chains, you may want to read What Is an SSL Certificate? A Developer's Guide for an overview of how certificates work.
The Three Levels of a Certificate Chain
Every certificate chain has the same structure, regardless of which CA issued your certificate:
When a browser connects to your site, your server sends the leaf certificate and any intermediate certificates. The browser checks whether the chain connects to a trusted root in its built-in trust store. The root certificate itself is never sent by the server β it's expected to already be present on the client.
Why the Chain Exists: Root CAs Stay Offline
Root CA private keys are among the most sensitive secrets in internet infrastructure. A compromised root CA could be used to forge trusted certificates for any website in the world β banks, governments, email providers, anything. To protect root private keys, root CAs are kept offline, physically air-gapped from the internet.
Because root CAs are offline, they can't sign website certificates directly. Instead, they issue intermediate CA certificates to subordinate authorities who do the day-to-day work of signing domain certificates. If an intermediate CA is ever compromised, it can be revoked without touching the root CA or invalidating the entire trust hierarchy.
This is why your server is responsible for serving the intermediate certificate. The root is assumed to be in the client's trust store. Everything between your leaf certificate and the root must come from your server.
The Most Common Chain Error: Missing Intermediate Certificate
The single most frequent SSL misconfiguration is a missing intermediate certificate. Your leaf certificate is installed, but the intermediate CA certificate is not being served alongside it.
Here's why this error is so deceptive:
- Desktop browsers often cache intermediates β Chrome and Firefox maintain a local cache of intermediate certificates they've encountered before. If a previous site used the same intermediate CA, the browser already has it and won't notice your missing intermediate.
- Mobile browsers don't cache β iOS Safari, Android Chrome on fresh installs, and most mobile browsers will fail immediately if the intermediate is missing from the server response.
- API clients and server-to-server calls always fail β
curl, Python'srequests, Node'shttpsmodule, Java'sHttpClient, and nearly every backend HTTP library do not cache intermediates. They reject the connection outright.
This is why a misconfigured chain can pass all your desktop browser testing and still silently break mobile users and backend API integrations in production.
β οΈ Classic incident pattern: You deploy a renewed certificate. Desktop Chrome works fine (it had the intermediate cached from your previous cert). You close the ticket. Three hours later, the mobile app team reports that all API calls are failing with SSL errors. The server is only sending the leaf certificate β no intermediate.
How to Check Your Certificate Chain
Option 1: Authgear SSL Certificate Chain Checker (recommended)
Use the Authgear SSL Checker to visualize your full certificate chain. It shows each level β leaf certificate, intermediate(s), and root β and immediately flags if any intermediates are missing or if the chain fails to connect to a trusted root.
π Run this after every certificate renewal. Let's Encrypt's Certbot correctly configures the chain when you use fullchain.pem β but if you manually install a paid CA certificate, it's easy to accidentally deploy only the leaf certificate. The SSL Checker catches this instantly.Option 2: OpenSSL (command line)
You can inspect exactly what your server is serving with OpenSSL:
If you see only one BEGIN CERTIFICATE block, your server is sending only the leaf certificate. The chain is incomplete.
How to Fix a Broken Certificate Chain
The fix is always the same concept: configure your web server to send the intermediate certificate alongside your leaf certificate. The exact steps depend on your server and how you obtained your certificate.
If you used Certbot (Let's Encrypt)
Certbot generates several certificate files in /etc/letsencrypt/live/yourdomain.com/. The most common mistake is using the wrong one:
In your web server config, always reference fullchain.pem as your certificate file, not cert.pem.
Nginx
Apache
Caddy
If using a paid CA (manual certificate)
After updating your config, reload your server and verify the fix with the Authgear SSL Checker.
How to Prevent Chain Issues
- Always use
fullchain.pemwhen using Certbot β never referencecert.pemalone. - Test from a clean environment β use the Authgear SSL Checker, which always connects fresh without cached intermediates.
- Test after every certificate change β check the chain immediately after deploying, before closing the deployment window.
- Set up expiry monitoring β tools like UptimeRobot, Checkly, or Datadog can alert you before a certificate expires or the chain becomes invalid.
Next Steps
- Check your certificate chain with the free Authgear SSL Checker
- Learn the fundamentals in What Is an SSL Certificate? A Developer's Guide
- Understand the protocol history in SSL vs TLS: What's the Difference and Why It Matters




