前阵子有个运维同行吐槽,说他管着二十多个网站的证书,全靠Excel表格记到期日期,每个月手动看一遍。结果过年放假那几天,两张证书同一天过期,年初三被电话叫起来处理。这种事靠人盯人迟早要出问题,上套监控工具才是正解。
方案一:Shell脚本+邮件告警
最轻量的做法是写一个shell脚本,用openssl命令检查证书剩余天数,低于阈值就发邮件。核心逻辑就几行:
用echo | openssl s_client -connect 域名:443 2>/dev/null | openssl x509 -noout -enddate拿到证书到期时间,再用date命令算剩余天数。低于30天就触发告警。
把这个脚本扔到crontab里每天跑一次,告警邮件发到运维组邮箱。优点是零成本、完全可控;缺点是只能监控有公网IP的域名,内网证书和泛域名证书不太适用,而且邮件容易被忽略。
方案二:云厂商证书管理服务
如果证书本身就是在阿里云、腾讯云这些平台上购买的,直接用平台自带的证书到期提醒功能。以阿里云为例,在SSL证书控制台可以设置到期提醒,支持提前30天、15天、7天三档通知,消息推送到短信、邮件和钉钉。
这个方案的好处是跟证书购买、续期、部署打通了全链路,点一下就能续费。但局限也明显——只能管本平台签发的证书,跨平台的证书管不了。如果你的证书分散在不同CA厂商,这个方案覆盖不全。
方案三:第三方监控平台
像Uptime Robot、又拍云监控这类工具,都支持SSL证书到期监控。配置很简单,填入域名和端口,设置告警阈值和通知渠道就行。Uptime Robot免费版可以监控50个站点,对中小团队足够用。
第三方平台的优势在于跨厂商、跨平台统一管理,不管证书是在哪里买的都能监控。而且这类工具通常支持Webhook通知,可以对接企业微信、飞书、Slack等即时通讯工具,告警比邮件更难被忽略。
选哪种方案,看团队规模和证书数量。五个以内的站点,脚本方案就够用;都在同一个云平台的,直接用平台服务;证书分散在多平台的,上第三方监控工具最省心。关键就一条:别再靠脑子记了。