ERR_CERT_AUTHORITY_INVALID: Fix in Chrome, Edge & Android

Key takeaway

NET::ERR_CERT_AUTHORITY_INVALID (Chrome error -202) means the browser can't trace the site's certificate back to a certificate authority it trusts: the certificate is self-signed, comes from a private CA, or is missing its intermediate, or something on your network is swapping certificates. If one site shows it, the site has to fix it. If every HTTPS site does, check the Wi-Fi sign-in page, antivirus HTTPS scanning, a work network or an outdated device. Don't enter passwords while you see it.

Check it now

NET::ERR_CERT_AUTHORITY_INVALID fix guide showing certificate trust chain failure and step-by-step solutions for Chrome, Edge, and Firefox
NET::ERR_CERT_AUTHORITY_INVALID fix guide showing certificate trust chain failure and step-by-step solutions for Chrome, Edge, and Firefox
Start reading
  1. What Is NET::ERR_CERT_AUTHORITY_INVALID?
  2. What ERR_CERT_AUTHORITY_INVALID Looks Like in Each Browser
  3. How SSL Certificate Trust Works (Chain of Trust)
  4. What Causes NET::ERR_CERT_AUTHORITY_INVALID?
  5. Fixes for Website Visitors (Client-Side)
  6. Fix 1: Sign In to the Wi-Fi or Try Another Network
  7. Fix 2: Check Antivirus HTTPS Scanning
  8. Fix 3: Update Your Browser and Operating System
  9. Fix 4: Check Your Date and Time
  10. Fix 5: Try Incognito, Then Restart the Browser
  11. Fix 6: On Android
  12. Fixes for Website Owners (Server-Side)
  13. Fix 1: Install a Certificate from a Trusted CA
  14. Fix 2: Send the Complete Certificate Chain
  15. Fix 3: Renew an Expired Certificate
  16. Fix 4: Cover Every Name Visitors Use
  17. Fix 5: Using a Private or Company CA
  18. ERR_CERT_AUTHORITY_INVALID on Localhost (Developers)
  19. Related SSL Certificate Errors
  20. Frequently Asked Questions

What Is NET::ERR_CERT_AUTHORITY_INVALID?

NET::ERR_CERT_AUTHORITY_INVALID means your browser doesn't trust whoever issued the website's certificate. Chrome shows "Your connection is not private", and under Advanced it says the server "could not prove that it is example.com" because its security certificate isn't trusted, which "may be caused by a misconfiguration or an attacker intercepting your connection." Chromium lists it as error -202 (net_error_list.h).

The connection was set up, the server sent its certificate, and the browser couldn't link it to a certificate authority (CA) it trusts. Chromium's own notes give three reasons: an attacker substituted the certificate, the site uses a CA the browser doesn't know, or the certificate is self-signed.

If a certificate has several problems, Chrome shows only the most serious one, and an untrusted issuer outranks a wrong name or an expired date. So a self-signed certificate that is also expired shows this code, not ERR_CERT_DATE_INVALID.

Is the site's certificate trusted? Check it

What ERR_CERT_AUTHORITY_INVALID Looks Like in Each Browser

Each browser words it differently. Look for these:

BrowserPage titleError code
Chrome, Brave, OperaYour connection is not privateNET::ERR_CERT_AUTHORITY_INVALID
EdgeYour connection isn't privateNET::ERR_CERT_AUTHORITY_INVALID
FirefoxBe careful. Something doesn't look right. (tab: Warning: Security Risk)SEC_ERROR_UNKNOWN_ISSUER, or MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT
SafariThis Connection Is Not PrivateNone shown
DevTools console, apps built on Chromium(page fails to load)net::ERR_CERT_AUTHORITY_INVALID

How SSL Certificate Trust Works (Chain of Trust)

Every certificate hangs off a chain of trust that ends at a root certificate authority the browser already trusts.

When you connect, the server sends its own certificate plus one or more intermediates. The browser checks that the site's certificate was signed by the intermediate, and the intermediate by a root on its list. Chrome no longer uses your operating system's list for this: it has carried its own, the Chrome Root Store, on Windows and macOS since Chrome 108 and on Android since Chrome 115 (not on iPhone and iPad, where Apple's list is required). That list has about 100 roots and updates in the background (Chrome Root Store). On Windows and macOS, Edge ships Microsoft's list; Firefox ships Mozilla's; and all of them also trust roots you or your company add to the computer.

If any link is missing or unknown, you get this error (more in what an SSL certificate chain is). The chain has four parts:

  • Root CA — self-signed and built into the browser's root list
  • Intermediate CA — signed by the root; the server must send it. Chrome downloads a missing one from the address in the certificate, but curl, apps and many other clients can't
  • Site certificate — signed by the intermediate, for the names in its Subject Alternative Name list
  • Validation — the browser walks from the site certificate up to a trusted root; every signature must check out

What Causes NET::ERR_CERT_AUTHORITY_INVALID?

Where you see it narrows the cause: one website means the problem is almost always that site's certificate. Every HTTPS site means it's your device or network.

CauseWhose sideWhere you see itQuick check
Self-signed certificateWebsiteOne siteThe certificate's issuer is the site itself
Private or company CAWebsiteOne site, or internal sitesSSL Checker: no root store trusts it
Missing intermediate certificateWebsiteOne site, in some apps and devicesSSL Checker: chain incomplete
Router, NAS or printer admin pageDevice192.168.x.x or .local addressesExpected: these use self-signed certificates
Public Wi-Fi sign-in pageNetworkEvery site until you sign inOpen any http:// page to get the sign-in screen
Antivirus HTTPS scanningYour deviceEvery HTTPS sitePause the web shield and reload
Company or school SSL inspectionNetworkEvery site on that networkWorks on mobile data
Outdated device or browserYour deviceSome sites, often Let's Encrypt onesUpdate the OS and browser

Fixes for Website Visitors (Client-Side)

If you're seeing the error on a site you don't run, try these in order. Never type a password or card number on a page showing this warning.

Fix 1: Sign In to the Wi-Fi or Try Another Network

Hotel, airport and café Wi-Fi often hijack your first connections to show a sign-in page, and an HTTPS site then gets the network's certificate instead of its own. Chrome's help says these networks need you to sign in, and that visiting a page that uses http:// brings up the sign-in page; Chrome may also show a "Connect to Wi-Fi" page instead of this error. Accept the sign-in, then reload.

Company and school networks may also inspect HTTPS with their own certificate. If the error disappears on mobile data, ask the network's IT team: devices they manage normally have their root installed, and yours may not.

Fix 2: Check Antivirus HTTPS Scanning

Antivirus suites such as Kaspersky, Avast, ESET and Bitdefender can scan HTTPS by decrypting it with their own certificate and re-encrypting it. If their root certificate isn't trusted by your browser, or the feature breaks after an update, every HTTPS site shows this error at once.

To test, pause only the HTTPS or web scanning feature and reload. If the error goes away, repair or update the antivirus so it reinstalls its certificate, or leave HTTPS scanning off.

Fix 3: Update Your Browser and Operating System

Browsers and operating systems update their root lists regularly (Chrome through background component updates), and old systems miss newer roots. Android versions older than 7.1.1, for example, don't trust ISRG Root X1, so Let's Encrypt sites fail there in browsers and apps that rely on the system's list.

Update the browser first: Chrome and Edge carry their own root lists on Windows and macOS, and Chrome does on Android from version 115. Then update the operating system.

Fix 4: Check Your Date and Time

A clock that's months or years off makes certificates look not yet valid or expired. Chrome usually shows a separate warning for that ("Your clock is behind" or ERR_CERT_DATE_INVALID), but a wildly wrong clock after a dead CMOS battery or a restored virtual machine can break trust checks too. It takes ten seconds to rule out.

Windows: Settings → Time & language → Date & time → turn on Set time automatically. macOS: System Settings → General → Date & Time → Set time and date automatically. Android: Settings → System → Date & time → Set time automatically (Automatic date and time on Android 16).

Fix 5: Try Incognito, Then Restart the Browser

An Incognito window (Ctrl+Shift+N in Chrome and Edge, Ctrl+Shift+P for a private window in Firefox) runs without your extensions unless you allowed them. VPN and proxy extensions can route your traffic through a server that presents its own certificate; if the site works in Incognito, turn extensions off at chrome://extensions and back on one at a time.

If the site just fixed its certificate, close every browser window and reopen it, so the browser checks the new one from scratch.

Fix 6: On Android

Android adds a few checks of its own:

  • Set the date and time automatically: Settings → System → Date & time.
  • Update Chrome and Android System WebView from the Play Store. Apps that show web pages through WebView check certificates against Android's own root list, so an old Android version can still fail there.
  • Turn off VPN, ad-blocking or "safe browsing" apps that filter HTTPS; they show a key or VPN icon in the status bar.
  • Sign in to the Wi-Fi: public networks show the error until you accept their sign-in page.
  • On Android older than 7.1.1, Let's Encrypt's root isn't in the system's list, so apps and browsers that rely on it can't verify those sites. A browser that carries its own root list is the only workaround.

Fixes for Website Owners (Server-Side)

If visitors report NET::ERR_CERT_AUTHORITY_INVALID on your site, the certificate you serve usually doesn't chain to a public root. Check it first with the SSL Checker, then fix what it finds. If it shows a different certificate from the one you installed, confirm with DNS Lookup that the domain points at the server you think, and with the HTTP Header Checker which server answers.

Fix 1: Install a Certificate from a Trusted CA

A self-signed certificate, or one from your own CA, will never be trusted by visitors' browsers: the signer isn't on any public root list.

Install a certificate from a publicly trusted CA instead. Let's Encrypt issues free, automated certificates trusted by every major browser; DigiCert, Sectigo and GlobalSign sell certificates with organization validation and support.

bash
# Install Let's Encrypt certificate with Certbot (Nginx)
sudo certbot --nginx -d example.com -d www.example.com

# Install Let's Encrypt certificate with Certbot (Apache)
sudo certbot --apache -d example.com -d www.example.com

# Verify the installed certificate
sudo certbot certificates

Fix 2: Send the Complete Certificate Chain

Your certificate can be perfectly valid while the server forgets to send the intermediate. Chrome often papers over this by downloading the missing intermediate itself, so the site works in Chrome and fails in curl, apps, payment callbacks and some phones.

Run the site through DNS Robot's SSL Checker: it shows the chain your server sends and whether Mozilla, Chrome, Apple and Microsoft each trust it. Or check from a 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]:'

# letsencrypt.org on 26 Oct 2026, a complete chain:
#  0 s:CN=letsencrypt.org
#    i:C=US, O=Let's Encrypt, CN=YE2
#  1 s:C=US, O=Let's Encrypt, CN=YE2
#    i:C=US, O=ISRG, CN=Root YE
#  2 s:C=US, O=ISRG, CN=Root YE
#    i:C=US, O=Internet Security Research Group, CN=ISRG Root X2
#  3 s:C=US, O=Internet Security Research Group, CN=ISRG Root X2
#    i:C=US, O=Internet Security Research Group, CN=ISRG Root X1
# Only certificate 0 listed = the intermediate is missing.

# nginx: point ssl_certificate at the full chain, not the leaf alone
ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

# Apache 2.4.8+
SSLCertificateFile    /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

Fix 3: Renew an Expired Certificate

An expired certificate from a trusted CA shows ERR_CERT_DATE_INVALID, not this error. You'll see ERR_CERT_AUTHORITY_INVALID only if the chain is also untrusted, because Chrome reports the more serious problem. Either way, check the dates and renew:

bash
# Check the certificate's dates
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -dates
# notBefore=Sep 30 12:00:00 2026 GMT
# notAfter=Dec 29 11:59:59 2026 GMT

# Renew now with Certbot, then reload the web server
sudo certbot renew --force-renewal
sudo systemctl reload nginx    # or apache2

Fix 4: Cover Every Name Visitors Use

A trusted certificate that doesn't list the name in the address bar shows ERR_CERT_COMMON_NAME_INVALID instead. It only turns into this error when the certificate is untrusted as well, so fix the trust first, then the names.

Browsers check only the Subject Alternative Name list, not the old Common Name. A wildcard (*.example.com) covers one level of subdomains but not example.com itself, so list both when you request it. The SSL Checker shows a certificate's full name list.

Fix 5: Using a Private or Company CA

Internal sites often use a company CA on purpose. That works only on devices where the company's root certificate is installed, and Chrome and Edge trust a root added to Windows or macOS (Chrome Root Store FAQ). Push it with Group Policy or your device management tool, or add it by hand:

bash
# Windows (Command Prompt as Administrator): trust for all users
certutil -addstore -f Root company-root.crt

# macOS: trust in the System keychain
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain company-root.crt

ERR_CERT_AUTHORITY_INVALID on Localhost (Developers)

A local HTTPS server with a self-signed certificate shows this error by design. Make the certificate trusted on your own machine instead of clicking through:

  • mkcert — mkcert -install creates a local CA and adds it to your system's trust store (and Firefox's, once certutil from NSS is installed); then mkcert localhost 127.0.0.1 ::1 makes a certificate Chrome, Edge and Firefox trust
  • Next.js — next dev --experimental-https creates a locally trusted certificate with mkcert for you
  • Vite — @vitejs/plugin-basic-ssl makes an untrusted certificate, so you'll still see this error; point server.https at mkcert's files instead
  • Old tips that no longer work — the chrome://flags/#allow-insecure-localhost switch expired after Chrome 130 and is no longer in chrome://flags
bash
# Install mkcert (macOS)
brew install mkcert
mkcert -install

# Generate localhost certificate
mkcert localhost 127.0.0.1 ::1
# Creates: localhost+2.pem and localhost+2-key.pem

# Use with Node.js
const https = require('https');
const fs = require('fs');
https.createServer({
  cert: fs.readFileSync('localhost+2.pem'),
  key: fs.readFileSync('localhost+2-key.pem')
}, app).listen(3000);

NET::ERR_CERT_AUTHORITY_INVALID is one of several certificate errors behind Chrome's "Your connection is not private" page. Each code points at a different check:

Error CodeWhat It MeansDNS Robot Guide
NET::ERR_CERT_AUTHORITY_INVALIDNo trusted CA behind the certificateThis article
NET::ERR_CERT_COMMON_NAME_INVALIDThe certificate doesn't cover this nameConnection not private guide
NET::ERR_CERT_DATE_INVALIDExpired, not yet valid, or your clock is wrongConnection not private guide
NET::ERR_CERT_REVOKEDThe CA revoked the certificateThe site needs a new certificate
ERR_SSL_PROTOCOL_ERRORThe TLS handshake failed before any certificate checkFix guide
ERR_SSL_VERSION_OR_CIPHER_MISMATCHNo shared TLS version or cipherFix guide

Check your SSL certificate chain now

DNS Robot's free SSL Checker shows the certificate chain a site sends, whether Mozilla, Chrome, Apple and Microsoft each trust it, the expiry date and the names it covers. If it passes there, the problem is on your device or network.

Sources

  1. net_error_list.h (CERT_AUTHORITY_INVALID -202), Chromium
  2. Chrome Root Store FAQ, Chromium
  3. Chains of trust, Let's Encrypt
  4. Baseline Requirements for TLS server certificates, CA/Browser Forum
  5. Chrome Root Store, Chromium
  6. Changes to Microsoft Edge TLS server certificate verification, Microsoft

Frequently Asked Questions

What does NET::ERR_CERT_AUTHORITY_INVALID mean?

Your browser doesn't trust whoever issued the website's certificate: it can't trace it to a certificate authority on its list. The certificate may be self-signed, issued by a private CA, or missing its intermediate, or something on your network may be replacing it. Chrome calls it error -202.

Is it safe to bypass NET::ERR_CERT_AUTHORITY_INVALID?

Only on a device you own and recognise, such as your router's or NAS's admin page on your home network, which use self-signed certificates. On a public website the warning can mean someone is intercepting the connection, so don't proceed, and never enter passwords or card details while it shows.

How do I fix NET::ERR_CERT_AUTHORITY_INVALID in Chrome?

If every site shows it: sign in to the Wi-Fi's login page or switch to mobile data, pause antivirus HTTPS scanning, update Chrome and your OS, check the clock, and try Incognito. If only one site shows it, the site's certificate is at fault and only its owner can fix it.

Why do I get NET::ERR_CERT_AUTHORITY_INVALID in Edge?

For the same reasons as in Chrome: Edge uses the same Chromium code and error codes. On Windows and macOS it checks certificates against Microsoft's own root list plus roots installed on the computer, so antivirus HTTPS scanning, a company network or a site's self-signed certificate trigger it in Edge too.

How do I fix ERR_CERT_AUTHORITY_INVALID on Android?

Set the date and time to automatic, update Chrome and Android System WebView from the Play Store, turn off VPN or ad-blocking apps that filter HTTPS, and sign in to public Wi-Fi. Android older than 7.1.1 doesn't trust Let's Encrypt's root, so apps and browsers that rely on the system's list fail on many sites.

Why does this error appear on only one website?

Because that site's certificate is the problem: it's self-signed, issued by a private CA, or the server doesn't send its intermediate certificate. You can't fix it from your side; the site owner has to install a certificate from a public CA with the full chain. An SSL checker shows which of these it is.

Why does one browser show the error but another doesn't?

Each browser can carry its own list of trusted root CAs: Chrome its Chrome Root Store, Edge Microsoft's list, Firefox Mozilla's and Safari Apple's. They also fill in a missing intermediate differently (Chrome and Edge download it, Firefox uses a preloaded set), so a borderline certificate can pass in one and fail in another.

Can an expired certificate cause ERR_CERT_AUTHORITY_INVALID?

Not on its own: an expired certificate from a trusted CA shows ERR_CERT_DATE_INVALID. But Chrome reports only the most serious problem, so if the certificate is both expired and untrusted, for example self-signed, you see ERR_CERT_AUTHORITY_INVALID.

How do I fix this error on localhost?

Use mkcert: mkcert -install adds a local CA to your trust store, and mkcert localhost 127.0.0.1 ::1 creates a certificate your browsers trust. Next.js does this for you with next dev --experimental-https. The old chrome://flags/#allow-insecure-localhost switch is no longer in chrome://flags.

Can antivirus software cause ERR_CERT_AUTHORITY_INVALID?

Yes. Antivirus programs with HTTPS scanning decrypt your traffic with their own certificate. If that certificate isn't trusted by your browser, every HTTPS site shows this error. Pause only the HTTPS or web scanning feature to test, then repair or update the antivirus.

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