AI 项目实战 03:自动检查网站 SSL 证书是否过期

SSL 证书自动检查工具

用于定期检查多个网站的 SSL 证书是否即将过期或已过期,并通过邮件(SMTP)发送检查报告,避免因忘记续期导致网站不可用。

功能

  • 多网站配置:在配置文件中添加多个域名与端口,统一检查
  • 每日定时执行:可配置每天固定时间(如 09:00)自动执行检查
  • 邮件报告:检查结果通过 SMTP 发送到指定邮箱,包含每个站点的状态与过期时间

环境要求

  • Python 3.8+
  • 可访问目标网站 443 端口(或自定义端口)
  • 可用 SMTP 账号(如 QQ 邮箱、163、企业邮箱等)

安装

cd ssl_autocheck
pip install -r requirements.txt

配置

  1. 复制示例配置并编辑:

    copy config.example.yaml config.yaml
  2. 编辑 config.yaml

    • check_time:每天执行检查的时间,24 小时制,如 "09:00"
    • warning_days:证书剩余天数少于此值时在报告中标记为「即将过期」,并提醒
    • websites:要检查的站点列表,每项包含:

      • host:域名(必填)
      • port:端口,默认 443
      • name:显示名称,可选,用于邮件中展示
    • smtp:发信配置

      • host / port:SMTP 服务器与端口(常见 587 或 465)
      • use_tls:是否使用 STARTTLS(587 一般为 true,465 用 SSL 时可为 false 并用 SMTP_SSL)
      • username / password:登录账号与密码(部分邮箱需使用「授权码」)
      • from_addr:发件人地址
      • to_addrs:收件人列表,检查报告会发到这些邮箱

使用

仅执行一次检查(并发送邮件)

适合测试配置或手动跑一次:

python ssl_checker.py --once

启动每日定时检查

不加重 --once 时,程序会:

  1. 启动时先执行一次检查并发邮件
  2. 之后每天在 check_time 执行一次检查并发邮件
python ssl_checker.py

建议在服务器上以后台方式长期运行,例如:

  • Windows:用任务计划程序或 pythonw 在后台运行
  • Linux:用 nohupsystemdcron 在固定时间调用 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]]
20260210_215917.png

仓库

https://github.com/ifu25/ssl_autocheck

最后修改:2026 年 02 月 10 日 10 : 19 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论