本文目录导读:

- 方案一:使用在线监控服务(最推荐,零部署成本)
- 方案二:使用命令行工具自动化检查(适合自有服务器)
- 方案三:浏览器插件(适合个人或小团队)
- 方案四:云平台自带的监控告警(如果你用的是云托管)
- 最佳实践建议
- 最简单的操作路径
针对HTTPS证书到期提前预警,最有效的方法是建立自动化监控机制,手动记录证书到期时间容易出错,一旦证书过期,网站将无法访问,用户会看到“不安全”或“连接不是私密连接”的警告,严重影响业务和信任度。
以下是几种主动和自动化的预警方案,按推荐程度排序:
使用在线监控服务(最推荐,零部署成本)
这类SaaS服务会定期检查你的域名证书状态,并通过多种渠道发送告警。
-
代表工具:
- SSL Labs:提供免费证书检查,但主动告警功能较弱。
- StatusCake (非免费):专业的网站监控,支持SSL证书到期检查。
- UptimeRobot (免费版可用):支持监控SSL证书到期,通过邮件、短信(需付费)等告警。
- Check-SSL.com:专门的SSL检查工具,支持邮件告警。
- 企业级APM(应用性能管理):如 Datadog、New Relic、Zabbix 等,均内置SSL证书监控模块。
-
操作步骤(以UptimeRobot为例):
- 注册账号,添加 Monitor。
- 选择监控类型为 SSL Monitor(或 HTTPS Monitor,并开启SSL检查)。
- 输入你的域名(如
example.com)。 - 设置 告警阈值(到期前30天、14天、7天 分别告警)。
- 添加告警联系人(邮箱、短信、Slack、企业微信等)。
- 保存即可。
优点:无需部署,开箱即用,7x24小时监控,支持多种告警方式。 缺点:免费版通常有监控域名数量限制(如UptimeRobot免费版只能监控5个域名)。
使用命令行工具自动化检查(适合自有服务器)
在服务器上跑一个定时脚本,检查证书到期时间,并在到期前发送通知。
-
核心命令: 使用
openssl工具从远程服务器获取证书信息。# 检查 example.com 的证书到期时间 echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
-
简单脚本示例(发送邮件): 创建一个脚本
check_ssl.sh,定时执行(如通过cron job)。#!/bin/bash DOMAIN="example.com" WARN_DAYS=30 # 提前30天告警 EMAIL="admin@example.com" # 获取过期日期 EXPIRY_DATE=$(echo | openssl s_client -servername $DOMAIN -connect $DOMAIN:443 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2) EXPIRY_SECONDS=$(date -d "$EXPIRY_DATE" +%s) NOW_SECONDS=$(date +%s) SECONDS_LEFT=$((EXPIRY_SECONDS - NOW_SECONDS)) DAYS_LEFT=$((SECONDS_LEFT / 86400)) if [ $DAYS_LEFT -lt $WARN_DAYS ]; then echo "警告:${DOMAIN} 的SSL证书将在 ${DAYS_LEFT} 天后过期!" | mail -s "SSL证书即将过期 - ${DOMAIN}" $EMAIL fi -
定时执行(crontab): 将脚本添加到cron:
# 每天早上8点检查一次 0 8 * * * /path/to/check_ssl.sh
优点:完全自控,免费,适合技术团队。 缺点:需要一定的脚本编写和维护能力,需要配置邮件服务器。
浏览器插件(适合个人或小团队)
在Chrome或Firefox上安装插件,当访问自己管理的网站时,在浏览器界面显示剩余天数。
- 推荐插件:
- SSL Certificate Expiry (Chrome)
- Certificate Expiry Reminder (Firefox)
优点:安装简单,零配置,适合个人站长或开发人员快速查看。 缺点:需主动访问网站才能看到告警(无法后台推送),不适合生产环境集群监控。
云平台自带的监控告警(如果你用的是云托管)
- 阿里云/腾讯云/AWS:如果你的域名和证书是托管在云平台(如AWS Certificate Manager、阿里云SSL证书服务、腾讯云SSL证书服务),它们通常自带到期前提醒(邮件/短信),你只需在控制台确认有效期和告警设置。
- 云负载均衡/CDN:如Cloudflare、AWS CloudFront,通常在仪表板会显示证书到期状态,并支持设置告警。
最佳实践建议
- 设置多个预警阈值:不要只设一个。
- 第1次提醒:过期前30天(通知团队,准备续期)
- 第2次提醒:过期前14天(紧急提醒,确认续费流程)
- 第3次提醒:过期前7天(非常紧急,必须立即处理)
- 第4次提醒:过期前1天(最后通牒,需人工干预)
- 使用自动续期:对于Let's Encrypt证书(免费),强烈推荐使用 Certbot自动化脚本,它会自动在证书到期前续期,对于商业证书,务必开启自动续费。
- 为子域名和多个域名建立监控:列出所有使用了HTTPS的二级域名、子域名和API地址,统一加入到监控列表中。
- 监控不只是看域名:证书到期时间基于服务器端的时间,确保服务器时间同步(使用NTP服务)。
最简单的操作路径
如果你只想用最省力的方法,按照以下顺序操作:
- 如果域名/托管在云平台(阿里云/腾讯云/AWS):直接登录云控制台,找到SSL证书管理页面,确认“自动续期”或“到期提醒”已开启。
- 如果是自建服务器,且预算有限:去 UptimeRobot 注册免费账号,添加你的域名,设置SSL监控,默认就有邮件提醒。
- 如果需要写脚本且会写:用上面的Bash脚本 + crontab,配置邮件发送。
核心原则:不要把证书过期的信息停在脑子里,把它变成一个系统自动发出的警报。 自动化监控是唯一可靠的解法。