aoaoDomain Admin-aoao监控

发布于 2024年04月15日

公司证书比较多,过期时间不一样,原来都是自己写的小监控脚本。今天发现用这个其实也很好用,还有其它功能。还可以用来看下你的域名过期时间,还有一些你喜欢域名什么时候过期可以注册。

啥是Domain Admin

基于Python + Vue3.js 技术栈实现的域名和SSL证书监测平台

用于解决,不同业务域名SSL证书,申请自不同的平台,到期后不能及时收到通知,导致线上访问异常,被老板责骂的问题

Domain Admin是一个轻量级监控方案,占用系统资源较少。同时,Domain Admin也可以作为一个Flask 和 Vue.js前后端分离的项目模板

  • 功能描述

    • 核心功能:域名SSL证书托管证书文件 的过期监控,到期提醒

    • 支持证书:单域名证书、多域名证书、通配符证书、IP证书、自签名证书

    • 证书部署: 单一主机部署、多主机部署、动态主机部署

    • 通知渠道:支持邮件、Webhook、企业微信、钉钉、飞书等通知方式

    • 支持平台:macOS、Linux、Windows

    • 辅助功能:Let’s Encrypt SSL证书申请和自动续期

    • 多语言:支持中文、英文

aoao域名监控脚本



import os
import smtplib
from email.mime.text import MIMEText
from datetime import datetime, timedelta
import OpenSSL

# 邮件相关信息
to_email = ['']
from_email = 'f  # 发件人邮箱
password = '  # 发件人邮箱密码
smtp_server = 'smtp.qq.com'  # SMTP服务器地址
smtp_port = 587  # SMTP服务器端口号

# 设置证书文件夹路径
cert_dir = 'C:\\temp\\certifications'

# 获取当前日期和30天后的日期
current_date = datetime.now()
date_30_days_later = current_date + timedelta(days=300)

# 邮件服务器连接
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(from_email, password)

# 遍历目录中的所有文件
for filename in os.listdir(cert_dir):
    if filename.endswith('.crt'):  # 检查文件扩展名
        file_path = os.path.join(cert_dir, filename)
        with open(file_path, 'rb') as cert_file:
            cert_data = cert_file.read()
            cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert_data)
            # 获取证书的过期日期
            expire_date = datetime.strptime(cert.get_notAfter().decode('utf-8'), '%Y%m%d%H%M%SZ')
            # 计算剩余天数
            remaining_days = (expire_date - current_date).days
            # 检查证书是否在30天内过期
            if current_date < expire_date < date_30_days_later:
                message = f'证书 {filename} 将在 {expire_date} 过期,距今不到30天。还剩 {remaining_days} 天。'
                print(message)
                # 创建邮件内容
                msg = MIMEText(message, 'plain', 'utf-8')
                msg['From'] = from_email
                msg['To'] = ', '.join(to_email)
                msg['Subject'] = '证书过期提醒'

                # 发送邮件
                server.sendmail(from_email, to_email, msg.as_string())

# 断开邮件服务器连接
server.quit()



评论