Skip to content
RU

SEC_ERROR_UNKNOWN_ISSUER in Firefox: How to Fix It

Laptop on a wooden desk under a lamp showing a blurred orange warning page

What it means: Firefox could not link the site's certificate to any root CA it trusts.

  1. Check the issuer under Advanced, View Certificate
  2. Disable antivirus HTTPS scanning or change network
  3. If it fails everywhere: serve the full chain
  4. Use a publicly trusted CA on public sites

Test your URL now

Runs a full TLS check: handshake, protocol versions, certificate chain, trust and expiry.

Check your site's SSL →

What SEC_ERROR_UNKNOWN_ISSUER means

Firefox builds a path from the server certificate to a trusted root, using the certificates sent in the handshake and a preloaded set of intermediates from public CAs. Trusted roots are the Mozilla root store, roots you imported into Firefox and, on Windows, macOS and Android, third-party roots added to the operating system. If no issuer can be found, Firefox stops with SEC_ERROR_UNKNOWN_ISSUER and says it does not trust the site "because its certificate issuer is unknown, the certificate is self-signed, or the server is not sending the correct intermediate certificates."

Firefox narrows this down where it can: a server certificate that signed itself becomes MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT, and an unknown issuer that matches its interception probe becomes MOZILLA_PKIX_ERROR_MITM_DETECTED. It is a trust failure at the TLS layer, not a DNS or protocol error. The Chrome and Edge counterpart is NET::ERR_CERT_AUTHORITY_INVALID.

Causes in Firefox, Chrome, Edge and Safari

BrowserWhat you seeMost common trigger
Firefox"Warning: Potential Security Risk Ahead", SEC_ERROR_UNKNOWN_ISSUERPrivate or corporate CA, TLS interception, missing intermediate
ChromeNET::ERR_CERT_AUTHORITY_INVALIDSame, except a missing intermediate is often fetched automatically
EdgeNET::ERR_CERT_AUTHORITY_INVALIDSame as Chrome
Safari"This Connection Is Not Private"Private CA not trusted on the device

Why Firefox and Chrome disagree. Chrome downloads a missing intermediate from the AIA URL in the certificate; Firefox does not. Firefox instead ships intermediates that public CAs disclose to Mozilla, so a missing chain from a mainstream CA usually still works, while an intermediate outside that set (a new one, or one from a private or regional CA) fails only in Firefox.

Interception. Antivirus HTTPS scanning and corporate TLS inspection re-sign sites with their own root. Current Firefox imports such roots from the OS store on Windows, macOS and Android (the security.enterprise_roots.enabled preference, on by default). On Linux it does not, so the root must be imported into Firefox itself or pushed by enterprise policy. When Firefox recognizes the interception it shows "Software is Preventing Firefox From Safely Connecting to This Site" instead.

Private CA. Intranet sites, appliances and some government or regional CAs are not in the Mozilla root store; every client needs the root installed.

Behind Cloudflare, nginx or another proxy

  • Cloudflare Origin CA. These certificates are trusted only by Cloudflare. If the proxy is paused or a record is DNS only, Firefox talks to the origin directly and shows SEC_ERROR_UNKNOWN_ISSUER. Re-enable the proxy or use a public certificate on the origin.
  • Full (strict) mode. An origin with an untrusted issuer produces Cloudflare error 526 for visitors, not a browser certificate warning.
  • Your own TLS terminator. nginx, HAProxy and Apache must send the leaf plus all intermediates.
# nginx
ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;   # not cert.pem
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

# Apache 2.4.8+: the chain goes in SSLCertificateFile
SSLCertificateFile    /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

If you own the site

  1. Count the certificates the server sends:
    openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
    Only one certificate, plus verify error:num=20:unable to get local issuer certificate and num=21:unable to verify the first certificate, means the intermediate is missing. Details: incomplete certificate chain.
  2. Serve fullchain.pem (or leaf followed by the CA bundle), then sudo nginx -t && sudo systemctl reload nginx.
  3. On a public site, replace private-CA or self-signed certificates: sudo certbot --nginx -d example.com -d www.example.com.
  4. On an intranet, distribute the root to Firefox with an enterprise policy, for example /etc/firefox/policies/policies.json on Linux:
    {
      "policies": {
        "Certificates": {
          "ImportEnterpriseRoots": true,
          "Install": ["/etc/pki/corp/root-ca.pem"]
        }
      }
    }
  5. Test with a client that never fetches intermediates, such as curl, before declaring the chain fixed.

If you are a visitor

  • Click Advanced, then View Certificate, and read the issuer. An antivirus or company name means interception: turn off HTTPS or encrypted-connection scanning in that product, or ask IT to deploy its root to Firefox.
  • Try mobile data or another network. Some filtering proxies and Wi-Fi portals re-sign HTTPS.
  • Import a root yourself only when you know who owns it, such as your employer: Settings > Privacy & Security > Certificates > View Certificates > Authorities > Import, and tick "Trust this CA to identify websites".
  • If one public site fails everywhere and other sites work, the site is misconfigured; tell the owner.

"Accept the Risk and Continue" is not offered on HSTS sites. Clearing the cache does not help, because certificates are not stored in the HTTP cache.

How to confirm the fix

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 https://example.com/ && echo "chain OK"
# missing intermediate: curl: (60) SSL certificate problem: unable to get local issuer certificate

Reload the site in Firefox afterwards. To see the chain as the outside world gets it, use the enterno.io SSL checker.

Related errors

CertificateExpiry, issuer, domains (SAN)
ChainIntermediate and root CA validation
TLS ProtocolTLS version and cipher suite
VulnerabilitiesHeartbleed, POODLE, weak ciphers

Why teams trust us

TLS 1.3
supported
Full
CA chain check
3,158
checks in 30 days
30/14/7
days-to-expiry alerts

How it works

1

Enter domain

2

TLS chain verified

3

Expiry date & vulnerabilities

What Does the SSL Check Cover?

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.

Certificate Details

Issuer, validity period, signature algorithm, covered domains (SAN), and validation type (DV/OV/EV).

Chain of Trust

Full chain verification: from leaf certificate through intermediates to root CA.

TLS Analysis

Protocol version (TLS 1.2/1.3), cipher suites, Perfect Forward Secrecy (PFS) support.

Expiry Alerts

Set up a monitor — get Telegram and email alerts 30/14/7 days before expiration.

DV vs OV vs EV Certificates

DV (Domain Validation)
  • Confirms domain ownership only
  • Issued in minutes automatically
  • Free via Let's Encrypt
  • Suitable for most websites
  • Most common certificate type
OV / EV
  • Organization (OV) or Extended Validation (EV)
  • Issued in 1-5 business days
  • Costs $50 to $500/year
  • For finance, e-commerce, government sites
  • Increases user trust

Who uses this

DevOps

SSL certificate monitoring

Security

TLS config audit

SEO

HTTPS as ranking factor

E-commerce

customer trust

Common Mistakes

Expired certificateBrowsers block sites with expired SSL. Set up auto-renewal or monitoring.
Incomplete certificate chainWithout intermediate CA, some browsers and bots cannot verify the certificate.
Mixed content on HTTPS siteHTTP resources on an HTTPS page — the browser lock icon disappears, reducing trust.
Using TLS 1.0/1.1Legacy TLS versions have known vulnerabilities. Use TLS 1.2+ or 1.3.
Domain mismatch in certificateThe certificate must cover all site domains, including www and subdomains.

Best Practices

Set up auto-renewalLet's Encrypt + certbot with cron — certificate renews automatically every 60-90 days.
Enable HSTSStrict-Transport-Security header forces browsers to always use HTTPS.
Use TLS 1.3TLS 1.3 is faster (1-RTT handshake) and safer — legacy ciphers removed.
Monitor expiration datesCreate a monitor on Enterno.io — get notified well before expiration.
Verify chain after renewalAfter certificate renewal, confirm that intermediate certificates are installed.

Get more with a free account

SSL certificate monitoring, check history and alerts 30 days before expiry.

Sign up free

Learn more

Sources

Frequently Asked Questions

Why does the site work in Chrome but show SEC_ERROR_UNKNOWN_ISSUER in Firefox?

Chrome fetches a missing intermediate certificate from the URL inside the leaf, while Firefox relies on its own preloaded list. Serve the full chain and both browsers behave the same.

Why does every site show SEC_ERROR_UNKNOWN_ISSUER?

Something is intercepting your HTTPS traffic with a root Firefox does not trust, usually antivirus HTTPS scanning or a company proxy. Check the issuer in View Certificate, then reconfigure that product or have IT deploy its root.

How do I make Firefox trust my company's root certificate?

Import it under Settings > Privacy & Security > Certificates > View Certificates > Authorities and tick "Trust this CA to identify websites", or have IT push it with the Certificates enterprise policy. Do this only for a root whose owner you know.

Does Firefox trust Let's Encrypt?

Yes. ISRG Root X1, the Let's Encrypt root, is in the Mozilla root store. If a Let's Encrypt site still fails, check whether the certificate came from the staging environment (certbot --staging or --test-cert): its issuer names start with (STAGING) and no browser trusts them.

Will clearing the Firefox cache fix it?

No. Certificates are verified on each new connection and are not stored in the HTTP cache. Fix the chain on the server or the interception on your device.

Try the live tool that powered this guide

Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.