[Python]检查SSL证书过期时间

2021-04-13 2939点热度 0人点赞 0条评论

前言

服务器上的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))

 

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论