SSL 证书自动检查工具
用于定期检查多个网站的 SSL 证书是否即将过期或已过期,并通过邮件(SMTP)发送检查报告,避免因忘记续期导致网站不可用。
功能
- 多网站配置:在配置文件中添加多个域名与端口,统一检查
- 每日定时执行:可配置每天固定时间(如 09:00)自动执行检查
- 邮件报告:检查结果通过 SMTP 发送到指定邮箱,包含每个站点的状态与过期时间
环境要求
- Python 3.8+
- 可访问目标网站 443 端口(或自定义端口)
- 可用 SMTP 账号(如 QQ 邮箱、163、企业邮箱等)
安装
cd ssl_autocheck
pip install -r requirements.txt配置
复制示例配置并编辑:
copy config.example.yaml config.yaml编辑
config.yaml:- check_time:每天执行检查的时间,24 小时制,如
"09:00" - warning_days:证书剩余天数少于此值时在报告中标记为「即将过期」,并提醒
websites:要检查的站点列表,每项包含:
host:域名(必填)port:端口,默认 443name:显示名称,可选,用于邮件中展示
smtp:发信配置
host/port:SMTP 服务器与端口(常见 587 或 465)use_tls:是否使用 STARTTLS(587 一般为 true,465 用 SSL 时可为 false 并用 SMTP_SSL)username/password:登录账号与密码(部分邮箱需使用「授权码」)from_addr:发件人地址to_addrs:收件人列表,检查报告会发到这些邮箱
- check_time:每天执行检查的时间,24 小时制,如
使用
仅执行一次检查(并发送邮件)
适合测试配置或手动跑一次:
python ssl_checker.py --once启动每日定时检查
不加重 --once 时,程序会:
- 启动时先执行一次检查并发邮件
- 之后每天在
check_time执行一次检查并发邮件
python ssl_checker.py建议在服务器上以后台方式长期运行,例如:
- Windows:用任务计划程序或
pythonw在后台运行 - Linux:用
nohup、systemd或cron在固定时间调用python ssl_checker.py --once
若使用 cron 每天 9 点执行一次并发邮件,可添加:
0 9 * * * cd /path/to/ssl_autocheck && /usr/bin/python3 ssl_checker.py --once此时无需常驻进程,由 cron 触发即可。
报告说明
邮件中会列出每个站点的:
- 状态:正常 / 即将过期 / 已过期 / 检查失败
- 证书过期时间(UTC)
- 剩余天数
当存在「即将过期」或「已过期」或「检查失败」时,会提示及时续期或排查问题。
效果
![[attachments/20260210_215917.png|745x578]]