专栏名称: 院长技术
《院长技术》专注于DevOps技术栈研究,云原生、Istio,CICD、Docker、Prometheus、K8s、ServiceMesh、Jenkins、Linux、微服务、分布式存储、监控、日志收集、安全渗透、虚拟化等技术栈。
目录
相关文章推荐
雨生云计算  ·  【广告】KreadoAI 联盟计划正式开启! ·  19 小时前  
谷哥大叔  ·  经典代运营SEO案例分析 ·  5 天前  
阿拉善宏桥信息网  ·  2025.02.23更新【5】家政服务、生活 ... ·  3 天前  
51好读  ›  专栏  ›  院长技术

实用:Python脚本监控SSL证书到期并发送邮箱告警

院长技术  · 公众号  ·  · 2024-11-15 14:58

正文

院长简介

作者:院长

职位:运维开发工程师

官网:https://deanit.cn

博客:https://blog.deanit.cn

擅长:

【虚拟化,容器化,自动化运维,CICD,监控,日志,中间件,双机热备,分布式存储,数据库,认证,组网隧道,Kali 安全渗透,网络攻击,负载均衡,Html,Css,Js,Jq,Vue3,Shell,Python,Go,前后端框架】

代码介绍

支持多域名监控,支持多邮箱告警。

SSL到期监控的重要性主要体现在以下几个方面:

一、预防服务中断

SSL证书作为网站和服务器的身份验证及数据加密的关键,其有效期是证书自颁发之日起至其到期日之间的时间范围。大多数网站每年都需要更新或更换一次SSL证书。如果证书过期,将导致网站或服务器无法正常访问,从而引发服务中断。这不仅会损害用户的访问体验,还可能影响企业的业务运营和声誉。因此,通过SSL到期监控,企业可以在证书到期前及时发现并续期,从而有效预防服务中断的风险。

二、提升安全性

SSL证书不仅保护了数据传输过程中的隐私和完整性,还可以帮助验证网站的身份,防止钓鱼网站攻击,增强用户对网站的信任。然而,随着网络攻击手段的不断升级,SSL证书的安全漏洞也可能被黑客利用。通过SSL到期监控,企业可以及时发现并修复这些安全漏洞,防止黑客攻击和数据泄露,从而提升组织的网络安全水平。

三、确保合规性

随着网络安全法规的不断完善,组织需要确保其SSL证书的使用符合相关要求。例如,某些行业或地区可能要求使用特定类型的SSL证书或遵循特定的证书管理规范。通过SSL到期监控,企业可以及时了解并遵守这些规则,避免因证书不合规而引发的法律风险。

四、实现自动化管理

在现代企业环境中,自动化已经成为提高效率和减少错误的重要手段。通过配置SSL到期监控工具(如Zabbix、Netdata等),企业可以实现SSL证书的自动化管理。这些工具可以持续监测SSL证书的状态、有效期等信息,并在证书即将到期时自动发送警报和通知。这不仅可以减轻运维人员的工作负担,还可以提高证书管理的准确性和及时性。

五、维护用户信任

SSL证书不仅关乎网站的安全性,还直接影响用户对网站的信任度。一个使用了过期或无效SSL证书的网站会让用户产生不信任感,从而影响网站的访问量和业务转化率。通过SSL到期监控,企业可以确保网站始终使用有效的SSL证书,从而维护用户的信任和忠诚度。

综上所述,SSL到期监控对于保护用户数据、维护企业声誉、提升安全性、确保合规性以及实现自动化管理等方面都具有重要意义。因此,企业应高度重视SSL证书的到期监控工作,并采取相应的措施来加强管理和维护。

Python代码

import sslimport datetimeimport smtplibimport socketfrom email.mime.text import MIMETextfrom email.header import Header
def check_ssl_expiry(domain): context = ssl.create_default_context() with context.wrap_socket(socket.socket(), server_hostname=domain) as s: s.connect((domain, 443)) cert = s.getpeercert() expiry_date = datetime.datetime.strptime(cert['notAfter'], "%b %d %H:%M:%S %Y %Z") return expiry_date.date()
def send_email(subject,message, to_addrs): # 发送邮件通知证书过期 mail_host = 'smtp.163.com' mail_port = 465 mail_user = '[email protected]' mail_pass = 'you_server' sender = '[email protected]' receivers = to_addrs # 创建邮件内容 message = MIMEText(message, 'plain', 'utf-8') message['From'] = sender message['To'] = ', '.join(receivers) message['Subject'] = Header(subject, 'utf-8') # 发送邮件 smtpObj = smtplib.SMTP_SSL(mail_host, mail_port) smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) print('邮件发送成功。')
domains = ["www.xxx.com","www.xxx2.com"]for domain in domains: expiry_date = check_ssl_expiry(domain) days_left = (expiry_date - datetime.date.today()).days if days_left < 30: subject = f"SSL certificate for {domain} is expiring soon" message = f"The SSL certificate for {domain} will expire on {expiry_date}." # send_email(subject, message, ['[email protected]','[email protected]','[email protected]']) send_email(subject, message, ['[email protected]','[email protected]']) else: print(f"{domain} has {days_left} days left until expiration.")

招贤纳士

欢迎👏关注《院长技术》,只做原创,干货~~~

更多技术干货持续输出中......


知识星球,试运营中,

原价188¥在不断上涨, 现加入仅需129¥ ,文档正逐渐上传!

欢迎加入 QQ-4 群:【

1群-2群-3群已满







请到「今天看啥」查看全文