एक expired SSL certificate की वजह से browsers पूरे page पर security warning दिखाते हैं, जो visitors को आपकी site तक पहुंचने से रोकती है। यहां बताया गया है कि कैसे check करें कि आपका certificate कब expire होता है और monitoring कैसे set करें।
Browser से Check करें
https://के साथ अपनी site पर जाएं- Address bar में padlock icon पर click करें
- “Certificate” या “Connection is secure” → “Certificate is valid” पर click करें
- “Valid to” या “Expires on” date देखें
OpenSSL से Check करें (Command Line)
Remote Check (किसी भी machine से)
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -enddate
Output: notAfter=Aug 5 12:00:00 2026 GMT
Local File Check
openssl x509 -noout -enddate -in /etc/ssl/gethttps/fullchain.pem
सभी Details एक साथ Check करें
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -subject -issuer -dates
One-liner Script से Check करें
Check करें कि certificate 30 days के अंदर expire होता है या नहीं:
if openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -checkend 2592000 > /dev/null 2>&1; then
echo "Certificate is valid for at least 30 more days"
else
echo "WARNING: Certificate expires within 30 days!"
fi
एक साथ Multiple Domains Check करें
अगर आप कई domains manage करते हैं, तो उन सभी को एक loop में check करें:
for domain in example.com www.example.com api.example.com; do
expiry=$(echo | openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)
echo "$domain — expires: $expiry"
done
Cron के साथ Automated Monitoring
एक daily cron job बनाएं जो certificate expiry 30 days के अंदर होने पर आपको email करे:
#!/bin/bash
# /usr/local/bin/check-ssl-expiry.sh के रूप में save करें
DOMAINS="example.com www.example.com api.example.com"
WARN_DAYS=30
WARN_SECS=$((WARN_DAYS * 86400))
for domain in $DOMAINS; do
if ! echo | openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null | \
openssl x509 -noout -checkend $WARN_SECS > /dev/null 2>&1; then
echo "WARNING: $domain certificate expires within $WARN_DAYS days" | \
mail -s "SSL Expiry Warning: $domain" admin@example.com
fi
done
Crontab में add करें: 0 9 * * * /usr/local/bin/check-ssl-expiry.sh
Monitoring Services Set करें
Zyada robust approach के लिए, monitoring service use करें:
| Method | कैसे | Cost | Alert Options |
|---|---|---|---|
| Calendar Reminder | Issue होने के 60 दिन बाद set करें | Free | Manual |
| Cron Script | Daily check script चलाएं | Free | |
| UptimeRobot | SSL monitor add करें, alert threshold set करें | Free tier | Email, Slack, webhook |
| Better Uptime | Incident management के साथ SSL monitoring | Free tier | Email, SMS, Slack |
| Certbot auto-renewal | systemd timer के through certbot renew | Free | Expiry को पूरी तरह रोकता है |
Let’s Encrypt के 90-day certificates के लिए, day 60 पर renew करें (30-day buffer)।
कौन से Certificate Details Verify करने चाहिए?
Expiry date के अलावा, time-to-time check करें:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -text | grep -E 'Subject:|Issuer:|Not After|DNS:'
यह दिखाता है:
- Subject/SAN — certificate सही domains cover करता है
- Issuer — expected CA (जैसे, Let’s Encrypt) द्वारा issued
- Not After — expiry date
- DNS names — SAN field में सभी domain names
FAQ
Certificate expire होने पर क्या होता है?
Browsers “Your connection is not private” (Chrome) या “Warning: Potential Security Risk Ahead” (Firefox) जैसी full-page warning दिखाते हैं। ज्यादातर visitors तुरंत चले जाएंगे। Search engines भी certificate renew होने तक आपके pages की ranking गिरा सकते हैं या उन्हें de-index कर सकते हैं।
कितनी बार check करनी चाहिए?
अगर आपके पास automated renewal (Certbot) है, तो safety net के रूप में monthly checks करें। अगर आप manually renew करते हैं (GetHTTPS), तो day 50 पर check करें और day 60 पर एक hard reminder set करें। 2029 में 47-day validity आने पर, monitoring और भी important हो जाती है।
क्या मैं command-line access के बिना expiry check कर सकता हूं?
हां। SSL Labs Server Test और SSL Shopper के SSL Checker जैसे online tools expiry date सहित certificate details दिखाते हैं — बस अपना domain enter करें। Browser DevTools भी यह दिखाता है (padlock icon → Certificate details)।
अगर मेरा certificate पहले ही expire हो गया तो?
तुरंत renew करें। नया certificate get करने के लिए GetHTTPS पर जाएं, अपने server पर files replace करें, और web server को reload करें। Process में 5 minutes लगते हैं। Certificate expire होने देने का कोई penalty नहीं है — बस renew करें और नया install करें।
क्या मैं एक script से multiple domains monitor कर सकता हूं?
हां। यहां एक script है जो आपके सभी domains check करती है और remaining days दिखाती है:
#!/bin/bash
for domain in example.com www.example.com api.example.com; do
expiry=$(echo | openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
days_left=$(( ($(date -d "$expiry" +%s) - $(date +%s)) / 86400 ))
if [ "$days_left" -lt 30 ]; then
echo "WARNING $domain: $days_left days left"
else
echo "OK $domain: $days_left days left"
fi
done
Note: date -d syntax Linux-specific है। macOS पर, date -j -f "%b %d %H:%M:%S %Y %Z" use करें।