ERR_CERT_SYMANTEC_LEGACY high
NET::ERR_CERT_SYMANTEC_LEGACY (distrusted CA)
The certificate chains to a legacy Symantec-family root that Chrome and Firefox distrusted, so the site is hard-blocked.
What you see
Your connection is not private NET::ERR_CERT_SYMANTEC_LEGACY Attackers might be trying to steal your information from example.com.
What’s actually happening
A full-page browser interstitial blocks the site, and unlike a normal name or expiry mismatch the cert itself can still be inside its validity dates. The dates are fine, the chain is the problem. This is a deliberate browser policy decision: the cert traces back to a root operated under Symantec's old PKI. It hits every visitor on Chrome 66+ and recent Firefox regardless of OS or network, and clicking through is often not even offered.
Common causes
- The server certificate was issued by Symantec, GeoTrust, Thawte, RapidSSL, or Equifax under the legacy Symantec PKI that browsers stopped trusting
- Chrome distrusted certs issued before June 1, 2016 starting in Chrome 66, then distrusted the entire legacy Symantec PKI in Chrome 70 (October 2018); Firefox rolled out the same distrust in parallel
- An old long-lived (e.g. 3-year) cert bought years ago that is technically unexpired but chains to a now-untrusted root
- An intermediate certificate in the chain that itself was issued off the distrusted Symantec hierarchy
- A server never reissued after the 2018 distrust deadline, often a forgotten internal tool or a legacy subdomain
How to fix it
- Confirm it's the CA, not expiryOpen the cert (click the warning > certificate details, or run openssl s_client -connect example.com:443 -showcerts) and read the issuer chain. If you see Symantec, GeoTrust, Thawte, RapidSSL, or Equifax up the chain, it's the distrust, and no clock change or date fix will help.
- Reissue from a currently trusted CAGet a fresh certificate from Let's Encrypt (free, automated), DigiCert, Sectigo, or Google Trust Services. Generate a new CSR, validate the domain, and you'll get a cert that chains to a modern trusted root. This is the actual fix; everything else is a workaround.
- Install the full new chainDeploy the new leaf plus the correct intermediate bundle your CA provides. A leaf that's fine but an intermediate still pointing at the old hierarchy keeps the error alive. Verify with the SSL Labs server test (ssllabs.com/ssltest) or openssl that the served chain is clean end to end.
- Automate renewal so it never recursPut certbot or your ACME client on a cron/systemd timer, or let your host/CDN (Cloudflare, your load balancer) manage TLS. Short-lived auto-renewed certs mean you're never again holding a multi-year cert when a CA gets distrusted.
Stop it recurring
Use an ACME-automated CA like Let's Encrypt with auto-renewal so certificates stay short-lived and current instead of outliving their root's trust.
Related errors