
What it means: Chrome could not chain the site's certificate to a root certificate it trusts.
Free online tool — SSL certificate checker: instant results, no signup.
Runs a full TLS check: handshake, protocol versions, certificate chain, trust and expiry.
During the TLS handshake the server sends its own (leaf) certificate and, if configured correctly, the intermediate CA certificates. Chrome's verifier then tries to build a path from the leaf, through intermediates, to a root in the Chrome Root Store or to a root that an administrator installed in the operating system. When no such path exists, because the issuer is unknown, the root is not trusted or a signature does not verify, Chrome reports NET::ERR_CERT_AUTHORITY_INVALID (net error -202). Chromium describes it as a certificate "signed by an authority we don't trust" in net_error_list.h.
This is a trust failure in certificate validation, at the TLS layer. It is not a DNS problem, not a protocol or cipher mismatch and not, by itself, a sign that the site was hacked. Chrome shows one code per certificate, and an untrusted issuer outranks a wrong hostname or an expired date, so an expired self-signed certificate still produces this code rather than ERR_CERT_DATE_INVALID.
| Browser | What you see | Most common trigger |
|---|---|---|
| Chrome | "Your connection is not private", NET::ERR_CERT_AUTHORITY_INVALID | Self-signed or private-CA certificate; TLS interception whose root is not installed |
| Edge | "Your connection isn't private", same code | Same as Chrome (Chromium engine) |
| Firefox | SEC_ERROR_UNKNOWN_ISSUER, or MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT for a self-signed certificate | Private CA, interception product, missing intermediate |
| Safari | "This Connection Is Not Private" | Self-signed or private-CA certificate not trusted on the device |
Missing intermediate. If the server sends only the leaf, desktop Chrome often still succeeds: its verifier downloads the missing issuer from the URL in the certificate's Authority Information Access (AIA) extension. Firefox does not fetch issuers that way; it relies on a preloaded set of intermediates from public CAs. Tools such as curl, Python, Java and Go do neither by default, so an incomplete chain often looks fine in a browser and fails in scripts and apps (see CERTIFICATE_VERIFY_FAILED in Python). When AIA fetching is blocked or the certificate has no AIA URL, Chrome shows this error too.
Interception. Corporate TLS inspection, antivirus "HTTPS scanning" and some parental-control tools re-sign every site with their own root. Chrome trusts that root only if it is installed in the OS certificate store. On a new device, or after the product was removed without cleaning up, every HTTPS site fails with this code, and the certificate viewer names the product instead of the real CA.
Distrusted CA. A CA can be removed from the Chrome Root Store; Chrome stopped trusting newly issued Entrust certificates in late 2024. Certificates from such a CA fail even with a perfect chain.
The browser judges the certificate on the first TLS hop. With a CDN in front, that is the edge certificate; the origin certificate matters only to the CDN.
NET::ERR_CERT_AUTHORITY_INVALID. Turn the proxy back on or install a publicly trusted certificate on the origin.# nginx: fullchain.pem = leaf + intermediates
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# HAProxy: one PEM file with the chain and the key
# cat fullchain.pem privkey.pem > /etc/haproxy/certs/example.com.pem
bind :443 ssl crt /etc/haproxy/certs/example.com.pemOn Apache 2.4.8 and later, point SSLCertificateFile at fullchain.pem; SSLCertificateChainFile is deprecated.
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/nullOne certificate whose issuer is not a root means a missing intermediate; OpenSSL prints verify error:num=20:unable to get local issuer certificate followed by num=21:unable to verify the first certificate. num=18:self-signed certificate means subject and issuer are identical.fullchain.pem from certbot, or append your CA's intermediate bundle after the leaf, then run sudo nginx -t && sudo systemctl reload nginx.sudo certbot --nginx -d example.com -d www.example.com. Walkthrough: free Let's Encrypt setup.openssl s_client -connect 203.0.113.10:443 -servername example.com for each IP.Clearing the cache or cookies does not help: certificates are not served from the HTTP cache, they are checked on every new connection.
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | grep "Verify return code"
# → Verify return code: 0 (ok)
curl -sS -o /dev/null -w "%{http_code}\n" https://example.com/
# any HTTP status means the chain verified; a chain problem prints curl: (60)Test with curl, not only Chrome: AIA fetching can hide a missing intermediate in the browser. To see the chain your server sends from outside your network, run the enterno.io SSL checker.
SSL/TLS is the encryption protocol that protects data between the browser and server. Our tool analyzes the certificate, chain of trust, TLS version, and knownvulnerabilities.
Issuer, validity period, signature algorithm, covered domains (SAN), and validation type (DV/OV/EV).
Full chain verification: from leaf certificate through intermediates to root CA.
Protocol version (TLS 1.2/1.3), cipher suites, Perfect Forward Secrecy (PFS) support.
Set up a monitor — get Telegram and email alerts 30/14/7 days before expiration.
SSL certificate monitoring
TLS config audit
HTTPS as ranking factor
customer trust
www and subdomains.Strict-Transport-Security header forces browsers to always use HTTPS.SSL certificate monitoring, check history and alerts 30 days before expiry.
Sign up freeOnly on a server you control, such as a test box with a self-signed certificate. On a public site the warning means Chrome cannot tell the real server from an impostor, so do not enter passwords or payment data.
Chrome can download a missing intermediate certificate through the AIA URL in the leaf certificate, while curl, Python, Java and Go do not do that by default. The server is sending an incomplete chain; serve fullchain.pem and both will work.
No. Certificates are verified on each new TLS connection and are not stored in the HTTP cache. If the owner just fixed the chain, a reload or browser restart is enough.
Something on that computer or network is intercepting TLS with a root certificate Chrome does not trust, usually antivirus HTTPS scanning or a corporate proxy. Check the issuer in the certificate viewer and fix or remove that product.
Yes. ISRG Root X1, the Let's Encrypt root, is in the Chrome Root Store and the other major root programs. Errors with Let's Encrypt almost always come from a missing intermediate or from serving cert.pem instead of fullchain.pem.
Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.