webzod
account

Serve the full certificate chain on nginx

tls.cert.incomplete_chain · effort: minutes

Why it matters

The server sends its own certificate but not the intermediate certificate that links it to a trusted authority. Some browsers can fetch the missing piece, but many apps, command-line tools and mobile clients cannot and will refuse the connection.

The fix

  1. nginx sends only what is in the ssl_certificate file, so that file must be the leaf certificate followed by the intermediates. With Let's Encrypt use fullchain.pem and not cert.pem.
  2. Test and reload nginx.
/etc/nginx/conf.d/site.conf
ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

The examples use example.com. Replace it with your own domain.

Read the documentation (opens in a new tab)

Scan your domain to see whether this applies to you.