独立运行外部脚本定期检测apache证书有效期并预警:支持本地文件解析(shell/java)和线上域名实时获取(openssl s_client),两级阈值预警(30天/7天),集成企微/邮件通知,cron定时执行。

为 Apache 设置 SSL 证书自动检测脚本,核心目标不是“让 Apache 自己检测”,而是**独立运行一个外部脚本,定期检查 Apache 当前使用的证书文件(或对应域名的线上证书)是否即将过期,并及时预警**。Apache 本身不内置证书有效期巡检功能,必须靠外部工具实现。
检测本地证书文件(推荐用于自托管环境)
如果你的证书文件明确存放在服务器上(如 /etc/ssl/certs/example.com.crt),可用轻量级 Shell 或 Java 脚本直接读取解析:
- Shell 方案:用
openssl x509 -in /path/to/cert.crt -noout -dates提取有效期,再用date计算剩余天数 - Java 方案:用
java.security.cert.CertificateFactory加载 PEM 文件,调用getNotAfter()获取过期时间,支持格式校验和多证书提取 - 关键点:脚本需能处理 PEM 头尾、跳过私钥块、只取第一个有效证书;建议设置提前 30 天、7 天两级预警
检测线上域名证书(适用于所有 HTTPS 站点)
无需访问服务器文件,直接通过 443 端口连接目标域名获取实时证书链,更贴近用户真实访问体验:
- 用
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates获取证书信息 - 可批量读取
domains.txt,逐个检测并汇总结果 - 支持错误容错:连接超时、非 HTTPS、证书不可信等情况应记录日志但不中断整体流程
集成企业微信/钉钉/邮件通知
检测到剩余天数低于阈值(如 ≤7 天)时,必须主动触达责任人:
- 企业微信机器人:构造 JSON 发送 POST 请求到 webhook URL,消息含域名、剩余天数、过期时间
- 邮件通知:使用
mail命令或 JavaMail API,标题标注【SSL 预警】便于筛选 - 避免单域名单次通知:脚本应收集所有临期域名,一次发送汇总提醒,减少信息骚扰
配置定时任务自动运行
检测脚本写好后,需交由系统定时调度,确保无人值守:
- Linux 下添加 cron 任务:例如
0 3 * * * /path/to/check_ssl.sh >> /var/log/ssl-check.log 2>&1(每天凌晨 3 点执行) - 确认脚本有执行权限:
chmod +x /path/to/check_ssl.sh - 测试时先手动运行,观察输出与日志,再启用定时;首次部署建议加
--dry-run参数模拟预警











