The service never reloaded
A new certificate is written to disk but the web server, proxy, or container is still holding the old one in memory until it restarts.
Days remaining
Most expiry incidents are not forgotten renewals. They are renewals that completed somewhere and never reached the socket serving traffic. ExpiryBeacon measures the certificate the server actually presents, so the countdown reflects reality rather than intent.
Days remaining is derived from the notAfter value on the leaf certificate returned during a live handshake, compared against the time of the check. It is rounded down to whole days, so a certificate with 30 days and 20 hours left reads as 30 days.
Because the figure comes from the served certificate rather than from a renewal system, a monitor and an ACME client can disagree — and when they do, the monitor is describing what your visitors get. That disagreement is the signal worth having.
Both dates are shown in UTC. Certificate validity is defined in UTC, and a local rendering is one of the easier ways to be an hour wrong about a deadline.
These are the ordinary failure modes an expiration monitor is meant to catch. Each one leaves the renewal log looking healthy.
A new certificate is written to disk but the web server, proxy, or container is still holding the old one in memory until it restarts.
One node in a pool, one virtual host, or one load-balancer listener renewed. The others keep serving the previous certificate.
A CDN, load balancer, or WAF terminates TLS with a certificate uploaded separately from the origin's renewal process.
The leaf renewed but the intermediate shipped alongside it did not, so some clients can no longer build a path to a trusted root.
Run the hostname through the checker and confirm the result describes the endpoint you meant — the resolved address, port, and covered names are all shown.
Signing in with Google stores the monitor against your account, which is what enables the daily scheduled check and the durable history.
Choose 30, 14, or 7 days per monitor. The window should be longer than your slowest realistic renewal path, not shorter.
Alerts are off until you enable them and set a notification address in the account policy. Until then the monitor still checks and records; it simply does not mail you.
| State | How it is decided |
|---|---|
| Healthy | The chain validates and days remaining is above the monitor's threshold. |
| Warning window | Days remaining has fallen to the threshold you chose — 30, 14, or 7 — while the certificate is still trusted and valid. |
| Trust warning | The certificate is still inside its validity window but the chain does not validate against the public root store. The reported reason distinguishes a self-signed certificate, a missing intermediate, and a hostname the certificate does not cover. |
| Expired | The notAfter date has passed. This takes precedence over every other state. |
| Check failed | The endpoint could not be reached or did not present a certificate. Previous evidence is kept and shown with its original timestamp. |
Email alerts are opt-in per account and go to one address you set. Delivery is driven by a state change, never by a schedule, so a monitor that stays in the same state stays quiet.
Whichever window you set on that monitor: 30, 14, or 7 days. The threshold is per monitor, so a hand-renewed certificate and an automated one can have different windows.
The next check reads the new certificate and the days-remaining figure moves with it. The SHA-256 fingerprint and serial number also change, which is the reliable way to confirm a renewal actually reached the endpoint.
No. ExpiryBeacon reports certificate state only. If a check cannot complete you will see that the check failed, but that is not a substitute for uptime monitoring.
Yes. An expired certificate is still inspected and recorded — the days-remaining figure simply reads as days since expiry, and the state is reported as expired.