Get alerted before your SSL certificate expires, and as soon as it starts failing for your visitors. Hyperping checks the certificate of every HTTPS monitor once a day, with no extra setup. For an overview of the feature, see SSL monitoring.

Each check opens one TLS connection, the way a browser would, and verifies what the server actually serves. A certificate your provider renewed but your server doesn't serve yet still counts as expiring.
| Check | Fails when |
|---|---|
| Expired | The certificate, or an intermediate the server relies on, is past its end date. |
| Not yet valid | The start date is in the future (often a server clock problem, or a certificate installed too early). |
| Hostname mismatch | None of the names in the certificate covers the monitored host. Wildcards and IP addresses are matched the way browsers match them. |
| Self-signed | The certificate signs itself instead of being issued by an authority. |
| Untrusted root | The chain ends at an authority browsers don't trust, such as a private or internal CA. |
| Incomplete chain | The server doesn't send the intermediate certificates. Some browsers repair this on their own; curl, Android and most API clients don't. |
| Invalid chain | Any other reason the chain doesn't verify against the public trust store. |
| Revoked | The authority revoked the certificate. Checked with the response the server staples, the authority's OCSP responder, or its revocation list (CRL), which is what Let's Encrypt uses. |
| Outdated TLS | The server only offers TLS 1.0 or 1.1, which current browsers refuse. |
| Weak signature | The certificate or an intermediate is signed with SHA-1 or MD5. |
| Weak key | A key shorter than 2048-bit RSA (or 224-bit ECDSA). Shown on the monitor, never alerted. |

In the monitor's Notifications tab, SSL Expiry Alerts sets how many days before expiry the first alert goes out: 1, 3, 7, 15, 30, 60 or 90 days, or never. With Send reminders on, a reminder follows at each step below it: with 30 days, alerts go out at 30, 15, 7, 3 and 1 days before expiry.

When a check finds a new problem, the monitor's SSL notification channels get an alert listing every issue on the certificate. When all problems are gone, they get a resolved notification. An issue that persists is not repeated every day, and an issue that was already there when the monitor was created is shown on the monitor but doesn't trigger an alert.
Pick the channels in the monitor's Notifications tab, under SSL notification channels.
Turn on Certificate changes to be told whenever the server starts serving a different certificate: a renewal, a new issuer, a new key. The notification shows the new and the previous certificate. It goes to the SSL channels, or to the team by email if the monitor has none. A load balancer or CDN that serves several certificates at once doesn't trigger it: a certificate seen in one of the last three checks doesn't count as new.
Each HTTPS monitor in the list shows the days left on its certificate, and a badge such as CN Mismatch when a check fails. Click Filter, then Certificate errors, and pick one type of error (expired, self-signed, hostname mismatch, revoked, incomplete chain…) or Has any certificate error.

On a monitor's Overview, the SSL button (with the days left) opens the SSL certificate panel:
Certificates are checked daily around 04:00 UTC. To read a renewed certificate right away:
Go to the monitor whose certificate you renewed.
On the Overview tab, click the SSL button.
The panel refreshes with the certificate the server serves now. Alerts follow the same rules as the daily check. On a monitor with no certificate read yet, the button is called Fetch certificate.
The same settings are available on monitors in the API: ssl_alert_days (-1 for never), ssl_reminders and ssl_notify_on_change. ssl_expiration is read-only: the whole days left before the certificate expires, rounded down, so a certificate expiring tomorrow afternoon shows 1. The Terraform provider's hyperping_monitor resource takes the same three settings.
curl -X PUT https://api.hyperping.io/v1/monitors/mon_3GhAQMYGEQuyUH \
-H "Authorization: Bearer ${API_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"ssl_alert_days": 30,
"ssl_reminders": true,
"ssl_notify_on_change": true
}'Webhooks added as SSL channels receive certificate error alerts in the same shape as before:
{
"event": "down",
"isDown": true,
"status": "SSL_ERRORS_DETECTED",
"sslEvent": true,
"domain": "https://example.com",
"alias": "Website",
"timestamp": "Oct 01 2026, 04:02:11 UTC"
}Informational notices have their own event and always carry "isDown": false, so a consumer that acts on event === "down" ignores them: ssl_expiring, ssl_renewed, ssl_changed, domain_expiring and domain_renewed.
{
"event": "ssl_expiring",
"isDown": false,
"status": "SSL_EXPIRING_SOON",
"sslEvent": true,
"monitorUuid": "mon_3GhAQMYGEQuyUH",
"domain": "https://example.com",
"alias": "Website",
"daysRemaining": 7,
"expirationDate": "2026-10-08T23:59:59.000Z",
"issuer": "R11",
"fingerprint": null,
"previous": null,
"timestamp": "Oct 01 2026, 10:00:03 UTC"
}Browsers fetch or cache missing intermediates; most other clients don't. Configure your server to send the full chain (on nginx, use the fullchain.pem file rather than cert.pem).
Services behind a private CA are reported as untrusted, because browsers and API clients without your CA installed would refuse them. The problem existing when the monitor is created doesn't send an alert; only a change does.
Click Recheck. If the old certificate is still shown, your server, load balancer or CDN still serves it: reload the web server, or check that the CDN has the new certificate. DNS changes can also take time to reach every resolver.
The check couldn't complete a TLS handshake (host down, port closed, firewall, or a server that only accepts a specific client). The last certificate read stays on the monitor until a check succeeds again.