Certificate Operations · Expiry

What Happens When an SSL Certificate Expires (and How to Prevent It)

THE MOMENT A CERTIFICATE EXPIRESVALIDtrustedEXPIRINGalert windownotAfter · no graceEXPIREDrejectedBrowser warningMobile app failsAPI handshake failsAutomated jobs break

When a TLS certificate expires, clients reject the connection immediately — browsers show a full-page warning, APIs fail the handshake, and the service is down. There is no grace period. Here is exactly what breaks, and how to stop it.

By MachineCert EngineeringReviewed for technical accuracy by the MachineCert Security TeamUpdated July 23, 20266 min read
Answer first

When a TLS/SSL certificate expires, clients that validate it reject the connection immediately: browsers replace the page with a full-screen security warning, APIs and integrations fail the TLS handshake, and any service behind that certificate is effectively offline until a valid one is installed. There is no grace period — validity ends at the second in the certificate's notAfter field. You prevent it by discovering every certificate, monitoring expiry with real lead time, and automating renewal.

The moment of expiry

A certificate doesn't degrade — it fails all at once. At the exact second it passes notAfter, every client that validates it starts refusing the connection. RFC 5280 What that looks like depends on who's connecting:

  • Browsers throw a full-page interstitial — "Your connection is not private" (NET::ERR_CERT_DATE_INVALID in Chrome). Most visitors never click past it.
  • APIs and backend integrations fail the TLS handshake outright. There's no screen to click through — the request just errors, so dependent services and webhooks break silently.
  • Mobile clients reject the expired certificate on normal validation; certificate pinning adds further failure modes, but pinning isn't the reason expiry is rejected.
  • Automated jobs — cron tasks, CI/CD pipelines, machine-to-machine calls — start failing on their next run, often where no human is watching.

There is no grace period

How to check when a certificate expires

For a single host, openssl gives you the exact expiry in one line:

bash
echo | openssl s_client -connect example.com:443 2>/dev/null \
    | openssl x509 -noout -dates
# notBefore=... / notAfter=...  ← the second value is when it dies

That works for a certificate you already know about. The one that causes the outage is almost always the one you don't — which is why checking by hand doesn't scale.

How to prevent expiry outages

THE RENEWAL LOOP FOR THE 47-DAY ERA1Discoverfind every cert2AutomateACME auto-renew3Verifyconfirm it's serving
The three habits that survive 47-day certificates — discovery feeds automation, and deployment verification closes the loop.

Reliable certificate operations come down to three habits, in order:

  • Discover everything. You can't renew what you can't see. Maintain a continuous inventory across every domain, cloud, and internal network — not a one-time spreadsheet.
  • Monitor with lead time. Alert on expiry weeks ahead, routed to an owner who can act — not a shared inbox nobody reads.
  • Automate renewal. Remove the human from the loop with ACME-based auto-renewal, and verify the new certificate is actually deployed and serving.

Expiry-prevention checklist

  • Every certificate is in a continuously-updated inventory (public, cloud, and internal)
  • Expiry alerts fire at 30+ days out to a named owner, not a shared mailbox
  • Renewal is automated (ACME) wherever the endpoint supports it
  • Post-renewal deployment is verified — the served certificate matches the issued one
  • A dead-man check catches a silent renewal-job failure before it becomes downtime

In the 47-day era, the window between "still fine" and "outage" is measured in days. Discovery and monitoring buy you the lead time; automation is what actually keeps you online.

Frequently asked

How long after expiry does a website stop working?

Immediately. There is no grace period — clients reject the certificate the instant it passes its notAfter time, and the site shows a security warning from that moment on.

Can you still access a site with an expired certificate?

In a browser, a person can sometimes click through the warning to proceed — not recommended, since the connection's authenticity is no longer verified. APIs, mobile clients, and automated jobs cannot click through, so machine-to-machine traffic breaks completely.

How do I check when a certificate expires?

For one host, run: echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -enddate. That prints the notAfter date. Checking by hand doesn't scale past a handful of hosts, which is why discovery and monitoring matter.

Do expired certificates renew themselves?

No. A certificate does not renew on its own — you need an ACME client or a certificate-lifecycle platform configured to reissue and deploy it before the expiry date.

References & Standards
  1. RFC 5280 section 4.1.2.5 — certificate validity runs from notBefore through notAfter, inclusive; after notAfter, conforming validation fails.
  2. CA/Browser Forum — Ballot SC-081v3: maximum public TLS certificate lifetime steps to 200 days (2026-03-15), 100 days (2027), 47 days (2029).
See it in practice

Stop tracking certificates by hand.

MachineCert discovers every certificate across your clouds and internal networks, scores each for expiry risk and automation readiness, and automates renewal — then verifies the new certificate is actually serving.

Run a free certificate scanSee certificate monitoring
  • No signup
  • About 60 seconds
  • Public certificates only