前言
服务器上的https证书一般来说很久一次才会续期,很可能会忘记续期,导致网站无法正常访问,我们可以通过Python脚本来定期检查证书的过期时间,如果临近过期,可以发送警报等提醒管理员。
Python脚本实现
这个脚本可以实现同时监测网上的SSL证书和本地证书
# !/usr/bin/env python # -*- coding:utf-8 -*- # 用途:获取https证书的过期时间,需要先执行pip3 install pyopenssl from urllib3.contrib import pyopenssl as reqs from datetime import datetime from OpenSSL import crypto # 公网验证 domain = "www.terrynow.com" cert = reqs.OpenSSL.crypto.load_certificate(reqs.OpenSSL.crypto.FILETYPE_PEM, reqs.ssl.get_server_certificate((domain, 443))) notafter = datetime.strptime(cert.get_notAfter().decode()[0:-1], '%Y%m%d%H%M%S') # 获取到的时间戳格式是ans.1的,需要转换 remain_days = notafter - datetime.now() # 用证书到期时间减去当前时间 print('Online domain \"%s\" remain days: %d' % (domain, remain_days.days)) # 本地验证证书文件 cert_file = '/Users/Terry/Downloads/cert1.pem' cert2 = crypto.load_certificate(crypto.FILETYPE_PEM, open(cert_file).read()) cert2.get_version() subject = cert2.get_subject() subject.get_components() notafter2 = datetime.strptime(cert2.get_notAfter().decode()[0:-1], '%Y%m%d%H%M%S') # 获取到的时间戳格式是ans.1的,需要转换 remain_days2 = notafter2 - datetime.now() # 用证书到期时间减去当前时间 print('Local domain \"%s\" remain days: %d' % (subject.CN, remain_days2.days))
文章评论