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