Article

How to Fix "Your Connection Is Not Private"

"Your connection is not private" appears when the browser can't trust the site's certificate — it's expired, self-signed, issued for a different domain, or from an untrusted authority. The exact NET::ERR_ code under "Advanced" tells you which; owners fix that specific cause on the server.

By Paul Rudenko, Security ResearcherUpdated Jun 26, 20267 min read

"Your connection is not private" appears when the browser can't trust the site's certificate — it's expired, self-signed, issued for a different domain, or from an untrusted authority. The exact NET::ERR_ code under "Advanced" tells you which; owners fix that specific cause on the server.

What does this warning actually mean?

The red "Your connection is not private" page is Chrome's certificate interstitial. It is not a virus, a hack, or a sign that your computer is broken.

It means the browser tried to establish an encrypted HTTPS connection, asked the server to prove its identity with a TLS certificate, and decided it could not trust the answer. Until that trust is established, Chrome refuses to load the page and shows the warning instead. Firefox, Edge, and Safari display their own versions of the same block with slightly different wording.

The single most useful detail on the page is hidden. Click Advanced and you will see a short machine code such as NET::ERR_CERT_DATE_INVALID. That subcode is the key: it names the precise reason trust failed.

Two different certificates can both produce the same red page for completely different reasons, so reading the subcode before you do anything else saves a great deal of guesswork. The rules browsers apply when validating a certificate are defined by the CA/Browser Forum's Baseline Requirements.

The three subcodes you will meet most often are:

  • NET::ERR_CERT_DATE_INVALID — the certificate has expired (or the start date is in the future, or your device clock is wrong). See the date-invalid guide.
  • NET::ERR_CERT_AUTHORITY_INVALID — the certificate is self-signed or issued by an authority the browser does not recognise. See the authority-invalid guide.
  • NET::ERR_CERT_COMMON_NAME_INVALID — the certificate is valid but was issued for a different domain name than the one in the address bar (a name mismatch). See the name-mismatch notes below.

Whichever subcode you see, the fix follows from it. The rest of this guide splits along the only line that matters: are you a visitor who just wants to read the page, or do you own the site and need to make the warning go away for everyone?

If you're just visiting

Start by reading the subcode under Advanced. It tells you whether the problem is on your side (a wrong clock, a captive portal) or on the site's side (an expired or misissued certificate). You cannot fix the site's certificate — only the owner can — but you can rule out the local causes quickly.

When "Proceed" is acceptable — and when it never is

Under Advanced, Chrome may offer a link to continue to the site anyway. On a site where you only read public information — a blog, a news article, a static reference page — proceeding is usually harmless if you understand the connection may not be private. The warning is telling you the truth: someone could, in theory, be intercepting the traffic.

Never click Proceed on a page where you will type a password, card number, or any personal detail — login pages, banking, payment, email, or government portals. A warning on exactly those sites is the strongest possible signal to stop. If your bank's site shows this, close the tab and reach the bank through a bookmark or their app, not by clicking through.

Fix your device clock

A surprising share of certificate warnings come from a wrong date or time on your own device. TLS certificates are only valid between two dates. If your clock is set days or years off, the browser thinks a perfectly good certificate has expired or has not started yet, and you get NET::ERR_CERT_DATE_INVALID on every HTTPS site at once.

Open your system settings and turn on automatic date and time (and the correct time zone), then reload. This is the single fastest thing to try when the warning appears everywhere.

Public Wi-Fi and captive portals

On hotel, airport, or cafe Wi-Fi you often have to accept terms or sign in on a "captive portal" page before you get real internet access. Until you do, the network quietly redirects your requests to its own sign-in page. Because that page is not the site you asked for, the certificate doesn't match and you see the warning.

The fix is not to click through: open a plain HTTP page (many devices auto-open the portal), complete the sign-in, and the warnings disappear on their own once you have genuine connectivity.

If you own the site

If visitors report this on your site, the certificate is genuinely failing for them and you need to fix it on the server. Read the subcode, then apply the matching fix. The warning will clear for everyone once the underlying certificate problem is resolved — there is nothing to change in the visitor's browser.

  • NET::ERR_CERT_DATE_INVALID — your certificate has expired. Renew or reissue it and reinstall the new certificate, then confirm auto-renewal is working so it does not lapse again. Most outages of this kind are simply a missed renewal.
  • NET::ERR_CERT_AUTHORITY_INVALID — you are serving a self-signed certificate, or the intermediate (chain) certificate is missing. Install a certificate from a publicly trusted authority and make sure the full chain — your certificate plus the intermediates — is served. A missing intermediate is the most common cause of an otherwise valid certificate being rejected.
  • NET::ERR_CERT_COMMON_NAME_INVALID — the certificate does not cover the exact hostname being requested. Reissue it with every hostname you serve listed in the Subject Alternative Name field. The classic case is a certificate that covers example.com but not www.example.com (or the reverse).

After any change, do a clean check from outside your own machine — browser caches and local trust settings can mask a problem that visitors still see. Confirm the expiry date, the full chain, and that every hostname you serve is listed.

A configuration line such as this in your server block is where the certificate and its chain are wired up; the chain file must contain the intermediates, not just your leaf certificate:

# nginx
ssl_certificate     /etc/ssl/fullchain.pem;   # leaf + intermediates
ssl_certificate_key /etc/ssl/privkey.pem;

Want to see why the browser doesn't trust the certificate?

Check your SSL configuration

Why does a valid certificate still show this?

The most confusing version of this error is a certificate that is fully valid and trusted but still triggers the warning. If your certificate was issued for example.com and a visitor opens www.example.com, the name in the certificate does not match the name in the address bar — so the browser shows "not private" even though the certificate is perfectly good. Reissue the certificate to cover both the apex and the www host (and add a redirect so visitors land on one canonical version). The same harmless-looking warning shows up on captive-portal Wi-Fi before you sign in; there the fix is to complete the portal login, not to touch the certificate at all.

Once you have read the subcode and matched it to a cause, "Your connection is not private" stops being a mysterious red wall and becomes a specific, fixable problem.

Frequently asked questions

Is it safe to click Proceed?

It depends entirely on what the page does. On a site where you only read public information — a blog, an article, a static reference page — clicking Proceed under Advanced is usually harmless, as long as you accept that the connection may not be private and could in theory be observed. But it is never safe to proceed on a page where you will enter anything sensitive: a login, a password, a card number, banking or payment details, email, or a government portal. A certificate warning on exactly those sites is the strongest possible signal to stop. If your bank or email shows this, close the tab and reach the service through a saved bookmark or its official app instead of clicking through the warning.

Why do I see this on every site suddenly?

When the warning appears on every HTTPS site at once, the cause is almost always on your device, not on the sites. The most common reason is a wrong system clock: certificates are valid only between two dates, so an incorrect date or year makes every good certificate look expired or not-yet-valid. Turn on automatic date and time, and confirm the time zone, then reload. Antivirus or security software that inspects HTTPS traffic can also break trust if its own root certificate is misconfigured — try disabling that scanning feature temporarily to test. Finally, a corrupted or outdated root certificate store, or being stuck behind a captive-portal Wi-Fi sign-in that redirects your requests, will produce warnings everywhere until you sign in. Check the clock first, since it fixes the majority of these cases in seconds, then work through the others if the warnings persist.

How do I fix it as the site owner?

Read the NET::ERR_ subcode shown under Advanced and fix that specific cause on the server. If it is DATE_INVALID, your certificate has expired — renew and reinstall it, then verify auto-renewal is working so it does not lapse again. If it is AUTHORITY_INVALID, replace any self-signed certificate with one from a publicly trusted authority and make sure you serve the full chain including the intermediate certificates; a missing intermediate is a frequent and easily overlooked cause. If it is COMMON_NAME_INVALID, reissue the certificate so it lists every hostname you serve in the Subject Alternative Name field, including both the apex domain and the www host, and add a redirect to one canonical version. After any change, test from outside your own machine and from a fresh browser session, because local caches and trust settings can hide a problem that visitors still see.

Does a VPN cause this?

A VPN does not normally cause certificate warnings, because it tunnels your traffic without touching the certificates the sites present. If warnings start when a VPN connects, the usual culprits are side effects rather than the VPN itself. A corporate VPN may route you through a proxy that inspects HTTPS using its own root certificate; if that certificate is not installed on your device, every site will fail trust. A VPN can also drop you onto a captive-portal network where sign-in pages trigger the warning until you authenticate. And if the VPN changes your effective date or DNS, you can see mismatch or date errors. Disconnect the VPN briefly: if the warnings vanish, the VPN's proxy or network handling is the cause.

Related guides

See your whole external attack surface

One page is a start. The full external scan covers TLS, headers, DNS, exposed files, open services and known-exploited CVEs across your whole domain.

See the full scan →