前言
服务器上的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))
文章评论