首页 > 其他分享 >获取ssl证书剩余天数

获取ssl证书剩余天数

时间:2023-08-07 09:22:55浏览次数:35  
标签:info domain socket 证书 ip ssl 天数

# -*- coding: utf-8 -*-
# @Time : 2023/8/4 11:22
# @Author : wangyafeng
# @FileName: 证书过期.py
# @Email : [email protected]
# @Software: PyCharm
import ssl
import socket
import time
from datetime import datetime


def ssl_connect(domain, ip):
    # 设置socket的超时时间为5秒
    socket.setdefaulttimeout(5)
    # 创建默认的SSL上下文
    context = ssl.create_default_context()
    # 创建一个SSL套接字
    skt = context.wrap_socket(socket.socket(), server_hostname=domain)
    try:
        # 建立SSL连接
        skt.connect((ip, 443))

        # 获取证书过期时间
        end_date = skt.getpeercert()['notAfter'].strip(' GMT')

        # 创建一个字典,存储本次连接中的域名、IP 地址和证书过期时间信息
        skt_info = {'domain': domain, 'ip': ip, 'end_date': end_date}
    except ssl.CertificateError as e:
        cert = e
    except socket.timeout:
        cert = 'Connect refused'
    except ConnectionResetError as e:
        cert = 'Connect reset' + str(e)
    except socket.gaierror as e:
        cert = 'Connnect gaierror'
    finally:
        # 关闭SSL套接字
        skt.close()
    return skt_info


def check_cert_time(info):
    # 获取当前时间戳
    current_timestamp = int(time.time())

    # 将证书过期时间转换成时间戳
    date_object = datetime.strptime(info['end_date'], "%b %d %H:%M:%S %Y")
    end_timestamp = int(date_object.timestamp())

    # 计算剩余天数
    remain_day = (end_timestamp - current_timestamp) / 86400

    # 打印域名、IP 地址和证书过期时间信息
    print(f"域名:{info['domain']},ip 地址:{info['ip']},证书过期时间:{info['end_date']}")

    # 根据剩余天数进行不同的提示
    # 如果证书过期时间减去当前时间的天数小于七天的话,则提示需要准备更换证书了
    if 0 < remain_day < 7:
        print('剩余时间小于七天!请及时更换证书!')
    elif remain_day < 0:
        print('证书已过期!请及时更换证书!')
    else:
        print(f"剩余天数为:{remain_day:.2f}天\n")


if __name__ == "__main__":
    domains = {}

    with open('www.txt', 'r', encoding='utf-8') as file:
        for line in file:
            domain, ip_pool = line.strip().split(':')
            domains[domain] = ip_pool.split(',')

    info = [ssl_connect(domain, ip) for domain, ip_pool in domains.items() for ip in ip_pool]

    [check_cert_time(i) for i in info]

 

www.txt

www.baidu.com:180.101.50.242,180.101.50.188
www.bing.com:202.89.233.101,202.89.233.100
www.taobao.com:58.49.198.196

标签:info,domain,socket,证书,ip,ssl,天数
From: https://www.cnblogs.com/wangyafeng/p/17610607.html

相关文章

  • nginx离线安装配置,项目部署相关配置,https ssl配置
    一、nginx安装1。通过nginx.org下载源码安装包,或直接wget下载点击链接去下载选择对应系统版本即可。我这里从稳定版【Stableversion】下载2.安装nginx依赖环境包yuminstallgcc-c++pcrepcre-develzlibzlib-developensslopenssl-devel3.上传或者下载nginx安装......
  • python 网站爬取数据 避免SSLError
    importrequestsfrombs4importBeautifulSoup#发送HTTP请求获取网页内容url="https://example.com/"response=requests.get(url,verify=False)#避免SSLErrorhtml_content=response.text#使用BeautifulSoup解析网页内容soup=BeautifulSoup(html_content,"h......
  • 查看证书/apk指纹md5/sha1/sha256
    Android证书在线一键生成工具查看apk指纹keytool-printcert-jarfileandroid_debug.apk查看证书职位keytool-list-v-keystoreandroid.keystore......
  • centos环境tomcat配置SSL
    环境:centos7.9tomcat9jdk1.8一.阿里云申请免费SSL按照官网的方法并未成功启动!44380端口加入安全组阿里云申请免费ssl下载后解压将localhost-rsa.pfx上传至tomcat的/usr/local/tomcat/apache-tomcat-9/conf/下配置service.xml修改redirectPort="443"......
  • 高额奖金+实习机会+官方证书!微众银行第二届金融科技高校技术大赛正式启动
     Datawhale推荐 微众银行金融科技高校技术大赛FinTechathon2020微众银行金融科技高校技术大赛再度开启!面向海内外高校精英学子发出征集令全线上赛事流程,跨越空间和地域更灵活的PK形式,考验智慧与才略这里依然有顶级的技术专家资源前沿的金融科技行业实践极具吸引力的奖金奖励20......
  • 阿里云平台WoSign SSL证书应用案例
    沃通CA与阿里云达成合作并在阿里云平台上线WoSign品牌SSL证书。自上线以来,WoSignSSL证书成为阿里云“数字证书管理服务”热销证书产品,获得阿里云平台客户认可,助力阿里云平台政府、金融、教育、供应链、游戏等各类行业客户实现网站系统数据传输安全。WoSignSSL证书,行业客户信赖之......
  • 2023年CSPM-3国标项目管理中级证书含金量高吗?想考一个
    CSPM-3中级项目管理专业人员评价,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。  【证书含金量】 ·竞聘优先......
  • nginx使用openssl自签名,实现https登录
    1.确认nginx是否已安装SSL模块查验方法:进入sbin目录,执行以下语句,显示结果如标记所示则表示安装成功./nginx-V 2.确认系统以安装SSL工具,开始制作证书选择一个存放证书的路径,执行以下语句即可:(1)生成密钥,得到文件private.keyopensslgenpkey-algorithmRSA-outprivate.ke......
  • Let’s Encrypt 免费证书提示:(STAGING) Pretend Pear X1证书不受信任
    通过Let'sEncrypt免费申请证书,发现浏览器并不信任原因我使用了ACMEV2测试环境:https://acme-staging-v02.api.letsencrypt.org/directory需要改为生产环境https://acme-v02.api.letsencrypt.org/directory测试环境有两个活跃的根证书,它们不在浏览器/客户端的信任存储......
  • Mac中使用Keytool生成证书以及获取公钥方案实现
    Keytool是java中提供的一个证书管理工具如何生成证书?首先在Mac中新建一个文件夹,名为jks,如下图所示:新建jks文件夹然后在聚焦搜索里面搜索终端,打开terminal相当于windows中的cmd命令窗口,打开之后输入以下命令cdjkskeytool-genkeypair-aliastest-keyalgRSA-keypasstes......