统计
  • 建站日期:2022-01-17
  • 文章总数:5712 篇
  • 评论总数:54392条
  • 分类总数:43 个
  • 最后更新:1天前

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

作者头像
首页 综合教程 正文
广告
广告

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

image.png

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  
aybk.cn
www.aybk.cn
EOF  

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系客服并出示版权证明以便删除!
安卓蝴蝶视频v1.0.0绿化版
« 上一篇 07-08
7月最新ChatGPT网页端源码 带三方支付
下一篇 » 07-07

发表评论

  • 泡泡
  • 阿呆
  • 阿鲁
  • 蛆音娘
    没有更多评论了