首页 > 编程语言 >Python脚本批量检查SSL证书过期时间

Python脚本批量检查SSL证书过期时间

时间:2022-12-02 10:59:02浏览次数:57  
标签:domain socket ssl Python get SSL cert 过期 my

背景

云平台https的域名服务器如果超过上百条,如果都分布在不同的服务器或者负载均衡上,如果即将过期, 做完替换SSL证书动作后,如何批量检查域名的SSL证书是否替换网站,可通过如下脚本实现。

Python脚本批量检查SSL证书过期时间

Python脚本

保存domain-ssl-check.py文件内容如下:

#!/usr/bin/env python3  
  
import ssl, socket  
import requests  
from dateutil import parser  
import pytz  
  
requests.packages.urllib3.disable_warnings()  
  
try:  
    _create_unverified_https_context = ssl._create_unverified_context  
except AttributeError:  
    # Legacy Python that doesn't verify HTTPS certificates by default  
    pass  
else:  
    # Handle target environment that doesn't support HTTPS verification  
    ssl._create_default_https_context = _create_unverified_https_context  
  
  
def get_domain_content(domain):  
    requests.packages.urllib3.disable_warnings()  
    url = 'https://' + domain  
    response = requests.get(url, verify=False).headers  
    print(response)  
  
  
def get_my_domain(mydomain):  
    try:  
        socket.setdefaulttimeout(5)  
        my_addr = socket.getaddrinfo(mydomain, None)  
        c = ssl.create_default_context()  
        s = c.wrap_socket(socket.socket(), server_hostname=mydomain)  
        s.connect((mydomain, 443))  
        my_cert = s.getpeercert()  
        get_my_cert_dated(mydomain, my_cert, my_addr)  
    except ssl.CertificateError and socket.gaierror as e:  
        pass  
  
  
def get_my_cert_dated(domain, certs, my_addr):  
    cert_beginning_time = parser.parse(certs['notBefore']).astimezone(pytz.utc)  
    cert_end_time = parser.parse(certs['notAfter']).astimezone(pytz.utc)  
  
    print('域名:(%s)  证书失效时间: %s' % (domain,  cert_end_time))  
  
  
def read_domain_files():  
    with open('./domain.txt', 'r',  
              encoding="utf-8") as file:  
        for domain in file:  
            try:  
                get_my_domain(domain.strip())  
            except Exception as e:  
                print('域名: (%s)-%s' %(domain.strip(), e))  
  
  
if __name__ == "__main__":  
    read_domain_files()  

 

使用方法

准备domain.txt一个域名一行,可从DNS导出记录

cat > domain.txt << EOF  
linuxeye.com  
www.linuxeye.com  
oneinstack.com  
www.linuxeye.com  
EOF  

 

执行:

python3 domain-ssl-check.py

 

 

 

 

 

 

  

标签:domain,socket,ssl,Python,get,SSL,cert,过期,my
From: https://www.cnblogs.com/linux985/p/16943704.html

相关文章

  • 当前python程序执行过程中执行其它的python程序(使用内置库subprocess)
    importsubprocessimporttime##subprocess.run(args,*,stdin=None,input=None,stdout=None,stderr=None,capture_output=False,shell=False,#......
  • study-python 一个用于保存python学习的代码的仓库
    opencv-study文件夹2022年11月30创建OpenCV是一个图像处理库。它包含大量图像处理函数day01文件夹p1.py本代码功能:读取图像数据img=cv.imread(cv.samples.findFi......
  • python脚本打包
    python脚本打包Python写脚本很方便,可以直接在机器上运行,但有时候脚本源码不方便透露或是其他机器不支持的原因,需要将其打包成可执行文件,需要用到pyinstaller首先下载pip......
  • 互联网下载Python Downloader
    你们可能使用下载软件从Internet下载照片或视频,但现在你可以使用PythonIDM模块创建自己的下载器。#PythonDownloader#pipinstallinternetdownloadmanagerimpo......
  • python生成requirements.txt文件
     使用步骤: 1、先安装pipreqs库pipinstallpipreqs2、在当前目录使用生成pipreqs./--encoding=utf8--force            --encoding=utf8:......
  • Python加密操作 对称加密/非对称加密
    安装包: pycryptodomehttps://pycryptodome.readthedocs.io/en/latest/src/installation.html#compiling-in-linux-ubuntu 1fromCrypto.HashimportSHA2562f......
  • python PIL resize
    https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.resizeImage.resize(size,resample=None,box=None,reducing_gap=None)[source]Re......
  • How to get file size in Python? 获取文件大小Python
    HowtogetfilesizeinPython?WecanfollowdifferentapproachestogetthefilesizeinPython.It’simportanttogetthefilesizeinPythontomonitorfi......
  • Python13-实战
    实战01(模拟篮球自动弹跳)#-*-coding:utf-8-*-importsys#导入sys模块importpygame#导入pygame模块pygame.init()#初始化pygamesize=width,height=640,......
  • python第13章实例
    #_*_coding:utf-8_*_importsysimportpygamepygame.init()size=width,height=640,480screen=pygame.display.set_mode(size)color=(0,0,0)ball=pygame.ima......