An expired SSL certificate turns your site into a red warning screen for every visitor. Browser warnings, zero organic traffic, broken API calls, and failed payment flows — all because you missed an SSL expiry alert that got buried in spam, or never set one up in the first place.
The fix is straightforward: configure automated SSL expiry alerts at 30, 14, 7, and 1 day before your certificate expires. This guide covers every method — from a one-line shell command to fully automated monitoring services — so you can choose the approach that fits your stack.
Before setting up alerts, it helps to understand the exact failure chain when a certificate expires:
Before configuring alerts, find out how much time you have right now.
Click the padlock icon in Chrome → "Connection is secure" → "Certificate is valid" → look for the expiry date under "Valid to".
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
| openssl x509 -noout -dates
Output:
notBefore=Sep 5 00:00:00 2026 GMT
notAfter=Dec 4 23:59:59 2026 GMT
Paste any domain into a free SSL checker for instant results — days remaining, issuer, and validity status — without opening a terminal.
Enter any domain to instantly see days remaining, expiry date, and issuer.
Check SSL Certificate →For teams comfortable with the command line, a cron-scheduled shell script is the lowest-cost DIY SSL expiry alert:
#!/bin/bash
DOMAIN="yourdomain.com"
THRESHOLD=30
ALERT_EMAIL="you@yourcompany.com"
EXPIRY=$(echo | openssl s_client -connect $DOMAIN:443 -servername $DOMAIN 2>/dev/null \
| openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)
EXPIRY_EPOCH=$(date -d "$EXPIRY" +%s 2>/dev/null || date -j -f "%b %d %T %Y %Z" "$EXPIRY" +%s)
NOW_EPOCH=$(date +%s)
DAYS_LEFT=$(( (EXPIRY_EPOCH - NOW_EPOCH) / 86400 ))
if [ $DAYS_LEFT -le $THRESHOLD ]; then
echo "SSL certificate for $DOMAIN expires in $DAYS_LEFT days ($EXPIRY)" \
| mail -s "⚠️ SSL expiry alert: $DOMAIN" $ALERT_EMAIL
fi
Schedule it in cron to run daily at 9 AM:
0 9 * * * /usr/local/bin/ssl-expiry-check.sh
Run a variant with different THRESHOLD values (30, 14, 7, 1) to get multi-stage alerts.
General uptime monitoring tools like UptimeRobot and StatusCake include SSL expiry checks as a feature. Setup is usually a few clicks: add your domain, enable SSL monitoring, set the alert threshold.
| Tool | Alert thresholds | Multi-domain | Price |
|---|---|---|---|
| UptimeRobot | 7 days only (free tier) | Limited on free | Free / $7+ |
| StatusCake | Configurable | ✅ | Free / $20+ |
| Pingdom | Configurable | ✅ | $15+/mo |
| Better Uptime | Configurable | ✅ | Free / $20+ |
The main limitation: free tiers typically alert only at 7 days, which isn't enough lead time for domains with slow approval processes (OV/EV certificates) or for teams where certificate renewal requires change-management approval.
A dedicated SSL monitoring service checks your certificates daily and fires alerts at every threshold automatically. No cron job, no script maintenance, no MTA configuration.
| Feature | Why it matters |
|---|---|
| Multi-threshold alerts (30/14/7/1 day) | Gives you time to act at each stage — not just a last-minute fire drill |
| Multi-domain dashboard | Monitor all your domains from one place |
| Reliable email delivery | Transactional email via a real provider — not a cron + sendmail setup that silently fails |
| External domain coverage | Monitor third-party certs (CDNs, APIs, partners) you don't control |
| Independent of your infrastructure | Alerts even when your own servers are down |
SSLWatch monitors your certificates daily and sends email alerts before expiry. Add unlimited domains from one dashboard.
Get SSL Expiry Alerts — $9/mo → Check a Domain FreeThe key lesson from teams that have experienced SSL outages: a single alert isn't enough. Here's what each threshold is actually for:
Expiry monitoring matters beyond your own servers:
Independent monitoring covers all of these — no server access required, just the domain name.
sudo certbot renew --dry-run to confirm auto-renewal works, then sudo certbot renewopenssl s_client or a free checker toolAn SSL expiry alert is one of the highest-ROI monitoring actions you can take — configure it once, and you eliminate an entire category of avoidable outage. Set multi-threshold alerts (30/14/7/1 days), cover all your domains including external ones, and verify that your renewal process actually works by watching the live certificate, not your certbot logs.
SSLWatch sends email alerts at 30, 14, 7, and 1 day before your SSL certificate expires. Monitor unlimited domains from one dashboard.
Get SSL Expiry Alerts — $9/mo → Check a Domain Free