SSL certificate expired: what it means and how to fix it fast
When an SSL/TLS certificate expires, browsers stop trusting your site and show a full-page "Your connection is not private" warning. Visitors bounce, forms break, and APIs that call your domain start failing. The fix is usually quick — the hard part is catching it before your customers do.
What "SSL certificate expired" actually means
Every HTTPS site presents a certificate that proves it owns the domain and encrypts traffic. Certificates are issued for a fixed window — today most are 90 days (Let's Encrypt) or up to about 398 days for paid certificates. When the "valid to" date passes, browsers can no longer verify the site is genuine, so Chrome, Safari and Firefox block the page with an interstitial warning (error codes like NET::ERR_CERT_DATE_INVALID).
Nothing about your server or content is "hacked" — the certificate simply aged out. But to a visitor the warning looks identical to a real attack, so the practical impact is the same: lost trust and lost traffic.
How to fix an expired certificate
The exact steps depend on how the certificate was issued, but the shape is always the same — renew, install, restart, verify:
- Auto-renewing (Let's Encrypt / Certbot, Caddy, most PaaS): the renewal probably failed silently. Run the renewal manually (e.g. `certbot renew`), check the cron/timer that should have run it, and reload the web server (nginx, Apache) so it picks up the new cert.
- Managed hosts (Cloudflare, Vercel, Netlify, cPanel): certificates are issued for you — an expiry here usually means a DNS or domain-validation problem. Re-run the SSL provisioning in the dashboard and confirm the domain still points at the host.
- Paid/manual certificates: buy the renewal from your CA, complete domain validation, then install the new certificate + intermediate chain and restart the server.
- After installing, hard-refresh and confirm the padlock returns — then check the chain and the new expiry date.
Verify the fix (and the whole chain)
A certificate can be "installed" but still broken if the intermediate chain is incomplete — desktop browsers sometimes cache the intermediate and hide the problem that mobile clients will hit. Confirm the new expiry date, the issuer, and that the chain is complete before you call it done.
You can check any domain in seconds with the free SSL certificate checker — it shows the expiry date, days remaining, issuer and chain trust with no signup.
Never let it expire again
Auto-renewal is not "set and forget" — renewals fail for boring reasons (a moved DNS record, a rate limit, a disabled cron, a firewall change) and fail silently. The only reliable defence is a warning that reaches a human days before the deadline.
That is exactly what VigilDog's SSL/TLS monitoring does: it watches the live certificate on every domain you manage and alerts you at about 14 days out, then escalates as the date nears — so an expiring certificate is a five-minute renewal, never a customer-facing outage.
