CheckSSL.sh - SSL证书到期时间监控脚本
温馨提醒
总结摘要
CheckSSL.sh 是一个用于监控网站 SSL 证书到期时间的 Shell 脚本,当证书即将过期时会发送告警通知,帮助管理员及时更新证书,避免服务中断。
CheckSSL.sh - SSL 证书到期监控脚本
脚本功能
CheckSSL.sh 是一个用于批量监控多个网站 SSL 证书到期时间的 Shell 脚本。它通过 OpenSSL工具获取SSL证书的有效期信息,计算剩余有效天数,并在证书即将过期时通过 Bark推送告警通知。
核心特性:
- 批量监控多个域名的 SSL 证书
- 自动计算证书剩余有效天数
- 支持自定义告警阈值(默认 7 天)
- 集成 Bark 推送告警通知
- 支持 SNI(Server Name Indication)
- 可灵活扩展其他告警通道(钉钉、企业微信等)
脚本依赖
系统工具依赖
openssl:用于获取 SSL 证书信息curl:用于发送 Bark 告警请求bash或sh:脚本运行环境
外部服务依赖(可选)
- Bark 服务:iOS 推送通知服务(如不需要告警可禁用)
- 服务地址:
https://api.day.app/ - 获取 Bark Key:安装 Bark App 后自动生成
- 服务地址:
环境变量依赖
.env 文件配置
脚本需要加载同目录下的 .env文件,该文件应包含以下变量:
配置文件位置:
- 优先加载当前工作目录的
.env文件 - 其次加载脚本所在目录的
.env文件
获取 Bark Key步骤:
- 在 iOS设备 上安装 Bark App(App Store搜索"Bark")
- 打开 App 会自动生成一个唯一的 key
- 复制该 key到.env文件中
参考文档: Bark 使用教程
内置变量说明
脚本内部定义的变量及其作用:
| |
自定义监控站点: 取消脚本中第 18 行的注释,并修改为需要监控的域名:
| |
告警阈值配置
参数用法
本脚本无命令行参数,通过修改脚本内变量和配置文件进行定制:
- 无参数模式:读取.env文件中的 bark_key,遍历 sites数组中的所有域名进行检查
- 禁用告警:注释掉脚本中 Bark 相关的 curl命令(见使用方法部分)
使用方法
快速安装与使用
下载脚本:
创建配置文件:
配置监控站点: 编辑
CheckSSL.sh脚本,修改第 18 行附近的 sites 数组:运行脚本:
典型使用场景示例
场景 1:手动检查证书状态
场景 2:定时监控任务(推荐)
场景 3:测试告警通道
场景 4:禁用 Bark 告警
如果不需要 Bark 通知,可以注释掉相关代码:
| |
场景 5:自定义告警阈值
场景 6:扩展其他告警通道
| |
实际应用场景
- 多域名证书管理:企业或个人管理多个域名时,批量监控所有 SSL 证书状态
- 自动化运维监控:集成到运维监控体系,作为 SSL 证书健康检查的一部分
- 定时巡检任务:通过 cron定时任务实现每日/每周自动检查
- 紧急告警通知:证书临近过期时立即推送通知,避免服务中断
- 证书续期提醒:配合自动化续期工具(如 Let’s Encrypt),在自动续期失败时提供人工干预提醒
- 第三方服务监控:监控依赖的第三方服务(如 API 提供商)的证书状态,提前感知潜在风险
注意事项
Bark 服务配置
- Bark Key 保密性:不要将包含 Bark Key 的.env文件提交到代码仓库
- 网络可达性:确保服务器能访问
https://api.day.app/ - 推送频率限制:避免过于频繁的检查触发 Bark 的频率限制
监控准确性
- SNI 支持:脚本使用
-servername参数支持 SNI,适用于虚拟主机环境 - 端口假设:默认检查 443 端口,如果使用非标准 HTTPS 端口需要修改脚本
- DNS 解析:确保服务器能正确解析被监控的域名
告警策略
阈值设置建议:
- 7 天:适合有自动化续期流程的环境
- 15-30 天:适合需要人工介入续期的环境
- 90 天:Let’s Encrypt证书建议提前 90 天开始尝试续期
避免告警疲劳:合理设置检查频率,建议每天检查 1 次即可
扩展与定制
日志记录:建议将脚本输出重定向到日志文件便于审计
1./CheckSSL.sh >> /var/log/ssl_monitor.log 2>&1多重告警:可以同时配置多种告警通道(Bark + 钉钉 + 企业微信 + 邮件)
错误处理:脚本缺少对网络异常的处理,建议在关键环境中增加错误重试机制
安全提示
权限控制:确保.env文件的权限设置为仅所有者可读
1chmod 600 .env定期检查:即使有自动化监控,也建议定期手动检查重要域名的证书状态
备份方案:准备备用的监控方案,防止单一监控系统失效