SSL certificate has expired
What it is
The expiry date (notAfter) on your website’s SSL certificate has already passed. The server still serves HTTPS, but the browser rejects that certificate — and all of your traffic goes down.
Why it’s a problem
Visitors see a full-page warning “Your connection is not private”. 99% of people close the tab and never come back.
- API clients refuse to call you (certificate validation fails).
- Mobile apps with certificate pinning crash.
- SEO crawlers won’t index your content.
- Payment gateways and login integrations stop working.
How to fix it
Short term (right now)
Issue a new certificate and deploy it. With Let’s Encrypt:
sudo certbot renew --force-renewal
sudo systemctl reload nginxIf you use Cloudflare, check SSL/TLS → Edge Certificates — in some cases Cloudflare renews the certificate here automatically.
Long term (so it never happens again)
Set up auto-renew and alerting. A Let’s Encrypt certificate is valid for 90 days, and certbot attempts to renew it starting on day 60.
- Make sure
certbot.timer(systemd) or a cron job is running:0 3 * * * certbot renew --quiet. - Set up external monitoring of the certificate expiry that e-mails you about 14 days ahead — renewal then never relies on memory alone.
- For paid certificates (DigiCert, Sectigo), note the date and add a calendar reminder 30 days ahead.
Shared hosting
In your hosting control panel, look for an SSL or HTTPS section. Many providers have a “Renew Let’s Encrypt” button. If it doesn’t work, contact support — auto-renew can get stuck because of DNS changes.