Diagnose and fix missing intermediate certificates.
An incomplete certificate chain is one of the sneakiest SSL errors. Your site may work perfectly in some browsers (that download missing certificates) and show errors in others (that don't). Mobile devices and API clients are particularly sensitive to this problem.
The certificate chain links your certificate to a trusted root certificate authority (CA root). If an intermediate certificate is missing, the browser can't establish this trust and displays an error, even if your certificate is perfectly valid.
This guide explains how the certificate chain works, how to diagnose an incomplete chain, and how to permanently fix the problem on your server.
How to identify this problem:
Why intermediates are missing:
Tools to analyze your certificate chain:
How to rebuild and install the complete chain:
#!/bin/bash
# See current chain sent by server
openssl s_client -connect example.com:443 -showcerts </dev/null 2>/dev/null
# Download and build complete chain
# For Let's Encrypt, use fullchain.pem instead of cert.pem
# Nginx:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Apache:
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
# Note: SSLCertificateChainFile is deprecated with Apache 2.4.8+
# Manually build a chain (if necessary)
cat server.crt intermediate.crt > fullchain.crt
# Verify chain order
openssl crl2pkcs7 -nocrl -certfile fullchain.pem | openssl pkcs7 -print_certs -noout
# Validate chain locally
openssl verify -CAfile ca-bundle.crt fullchain.pem
The key is to use fullchain.pem (Let's Encrypt) or concatenate your certificate with intermediates in the correct order.
Avoid chain problems:
Chrome automatically downloads missing certificates via AIA (Authority Information Access). Curl and most tools don't.
Your certificate authority provides them when issuing. For Let's Encrypt, they're in fullchain.pem. Otherwise, download from the CA's site.
Top to bottom: your certificate, then intermediate 1, then intermediate 2, etc. The root isn't needed.
No, browsers already have trusted root CAs. Including the root adds unnecessary weight to the handshake.
Check its expiration date with openssl. CAs also publish updates on their sites.
MoniTao checks the complete SSL connection. If the chain is incomplete and causes an error, you'll be alerted.
A complete certificate chain is essential for maximum compatibility. Use diagnostic tools and ensure all intermediate certificates are in place.
Monitor your certificates with MoniTao to be alerted of any SSL issues. Regular monitoring prevents unpleasant surprises.
Start free, no credit card required.