当前HTTP逐渐被大众所抛弃,HTTPS正在成为互联网上的主流。前段时间我们维护的一个HTTPS证书即将过期,由于多云环境比较复杂,团队小伙伴在替换更新证书的过程中出现疏漏,导致有一个域名证书没有及时更新,影响了系统可用性,为了杜绝这种问题再次发生,便写了这么个功能
比较简单,但很实用,再也不会出现证书漏更新的问题,具体流程为:扫描域名列表-->检查是否开启HTTPS-->获取证书过期时间-->记录入库-->更新证书
获取域名列表
我们用了很多的内部私有云SAAS服务,这些SAAS服务都提供有完善的API支持,DNS服务便是其中之一,可以根据DNS系统提供的API拿到所有的域名和记录。公有云也提供有完善的API文档,这里以阿里云为例,获取域名记录的代码如下
以上代码使用了阿里云提供的SDK,调用简单方便,最终返回请求状态及数据。方法可以获取到账号下的所有域名,方法可以获取到域名下的所有解析记录,需要注意数据量大小,以确定是否需要分页查询
检查是否开启HTTPS
检查是否开启HTTPS也是简单粗暴,直接通过模块请求HTTPS地址,没有报错则表示开启了https支持,大概代码如下
需要注意的是,如果批量扫描域名的话需要使用模式,否则可能会因为链接过多而报错
获取证书过期时间
之后再通过模块来拿到域名的HTTPS证书过期时间,代码如下
使用之前需要先安装模块,这里建议使用python3.6及以上版本,除了可以拿到证书过期时间外,还有以下方法能够获取到更多证书相关的信息:,,,,,,,,,
定时执行入库
以上步骤会定时执行监控,当发现证书过期时间小于30天时发报警,执行日志就写入了数据库方便前端页面展示
数据库就三个字段,在每次执行完一轮扫码后都会将详细信息计入上表中
前端获取最新一条数据展示
更新证书
证书更新是最繁琐的事情,因为涉及到多平台不同环境,每家公司情况可能都有不同,我们因为大量使用了SAAS服务,SAAS服务又提供有API,所以更新起来比较简单,调用API即
搞定收官!KPI++