国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SSL 證書(shū)過(guò)期巡檢腳本 (Python 版)

這篇具有很好參考價(jià)值的文章主要介紹了SSL 證書(shū)過(guò)期巡檢腳本 (Python 版)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

哈嘍大家好,我是咸魚(yú)

之前寫(xiě)了個(gè) shell 版本的 SSL 證書(shū)過(guò)期巡檢腳本 (文章:《SSL 證書(shū)過(guò)期巡檢腳本》),后臺(tái)反響還是很不錯(cuò)的

那么今天咸魚(yú)給大家介紹一下 python 版本的 SSL 證書(shū)過(guò)期巡檢腳本 (完整代碼在文末)

思路

導(dǎo)入相關(guān)模塊

import ssl
import socket
import time
from datetime import datetime

首先我們創(chuàng)建一個(gè) domain.txt 用來(lái)存放要檢查的域名和對(duì)應(yīng)的 IP 地址

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

我們讀取該文件,把里面的域名和對(duì)應(yīng)的每個(gè) ip 取出來(lái),并存放到字典 domains 里面

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

取出來(lái)之后我們循環(huán)遍歷字典,去獲取每個(gè)域名對(duì)應(yīng)的證書(shū)信息(ssl_connect 函數(shù))

def ssl_connect(domain, ip):
    # 設(shè)置socket的超時(shí)時(shí)間為5秒
    socket.setdefaulttimeout(5)
    # 創(chuàng)建默認(rèn)的SSL上下文
    context = ssl.create_default_context()
    # 創(chuàng)建一個(gè)SSL套接字
    skt = context.wrap_socket(socket.socket(), server_hostname=domain)
    try:
        # 建立SSL連接
        skt.connect((ip, 443))

        # 獲取證書(shū)過(guò)期時(shí)間
        end_date = skt.getpeercert()['notAfter'].strip(' GMT')

        # 創(chuàng)建一個(gè)字典,存儲(chǔ)本次連接中的域名、IP 地址和證書(shū)過(guò)期時(shí)間信息
        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:
        # 關(guān)閉SSL套接字
        skt.close()
    return skt_info

ssl_connect 函數(shù)返回一個(gè)字典 skt_info,包含當(dāng)前連接的域名、ip 地址和證書(shū)過(guò)期時(shí)間

# skt_info 內(nèi)容
{'domain': 'www.baidu.com', 'ip': '180.101.50.242', 'end_date': 'Aug  6 01:51:05 2024'}
{'domain': 'www.baidu.com', 'ip': '180.101.50.188', 'end_date': 'Aug  6 01:51:05 2024'}
{'domain': 'www.bing.com', 'ip': '202.89.233.101', 'end_date': 'Aug 16 03:47:45 2023'}
{'domain': 'www.bing.com', 'ip': '202.89.233.100', 'end_date': 'Aug 16 03:47:45 2023'}

然后我們調(diào)用 check_cert_time 函數(shù)進(jìn)行證書(shū)有效期檢查和提示

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]

check_cert_time 函數(shù)內(nèi)容如下:

def check_cert_time(info):
    # 獲取當(dāng)前時(shí)間戳
    current_timestamp = int(time.time())

    # 將證書(shū)過(guò)期時(shí)間轉(zhuǎn)換成時(shí)間戳
    date_object = datetime.strptime(info['end_date'], "%b %d %H:%M:%S %Y")
    end_timestamp = int(date_object.timestamp())

    # 計(jì)算剩余天數(shù)
    remain_day = (end_timestamp - current_timestamp) / 86400

    # 打印域名、IP 地址和證書(shū)過(guò)期時(shí)間信息
    print(f"域名:{info['domain']},ip 地址:{info['ip']},證書(shū)過(guò)期時(shí)間:{info['end_date']}")

    # 根據(jù)剩余天數(shù)進(jìn)行不同的提示
    # 如果證書(shū)過(guò)期時(shí)間減去當(dāng)前時(shí)間的天數(shù)小于七天的話,則提示需要準(zhǔn)備更換證書(shū)了
    if 0 < remain_day < 7:
        print('剩余時(shí)間小于七天!請(qǐng)及時(shí)更換證書(shū)!')
    elif remain_day < 0:
        print('證書(shū)已過(guò)期!請(qǐng)及時(shí)更換證書(shū)!')
    else:
        print(f"剩余天數(shù)為:{remain_day:.2f}天\n")

最后我們執(zhí)行一下代碼,看看結(jié)果如何
SSL 證書(shū)過(guò)期巡檢腳本 (Python 版)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-623618.html

完整代碼

import ssl
import socket
import time
from datetime import datetime


def ssl_connect(domain, ip):
    # 設(shè)置socket的超時(shí)時(shí)間為5秒
    socket.setdefaulttimeout(5)
    # 創(chuàng)建默認(rèn)的SSL上下文
    context = ssl.create_default_context()
    # 創(chuàng)建一個(gè)SSL套接字
    skt = context.wrap_socket(socket.socket(), server_hostname=domain)
    try:
        # 建立SSL連接
        skt.connect((ip, 443))

        # 獲取證書(shū)過(guò)期時(shí)間
        end_date = skt.getpeercert()['notAfter'].strip(' GMT')

        # 創(chuàng)建一個(gè)字典,存儲(chǔ)本次連接中的域名、IP 地址和證書(shū)過(guò)期時(shí)間信息
        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:
        # 關(guān)閉SSL套接字
        skt.close()
    return skt_info


def check_cert_time(info):
    # 獲取當(dāng)前時(shí)間戳
    current_timestamp = int(time.time())

    # 將證書(shū)過(guò)期時(shí)間轉(zhuǎn)換成時(shí)間戳
    date_object = datetime.strptime(info['end_date'], "%b %d %H:%M:%S %Y")
    end_timestamp = int(date_object.timestamp())

    # 計(jì)算剩余天數(shù)
    remain_day = (end_timestamp - current_timestamp) / 86400

    # 打印域名、IP 地址和證書(shū)過(guò)期時(shí)間信息
    print(f"域名:{info['domain']},ip 地址:{info['ip']},證書(shū)過(guò)期時(shí)間:{info['end_date']}")

    # 根據(jù)剩余天數(shù)進(jìn)行不同的提示
    # 如果證書(shū)過(guò)期時(shí)間減去當(dāng)前時(shí)間的天數(shù)小于七天的話,則提示需要準(zhǔn)備更換證書(shū)了
    if 0 < remain_day < 7:
        print('剩余時(shí)間小于七天!請(qǐng)及時(shí)更換證書(shū)!')
    elif remain_day < 0:
        print('證書(shū)已過(guò)期!請(qǐng)及時(shí)更換證書(shū)!')
    else:
        print(f"剩余天數(shù)為:{remain_day:.2f}天\n")



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

    with open('domain.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]

到了這里,關(guān)于SSL 證書(shū)過(guò)期巡檢腳本 (Python 版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SSL證書(shū)即將過(guò)期應(yīng)當(dāng)怎么更新?

    目前SSL證書(shū)接受程度相當(dāng)廣泛,在網(wǎng)絡(luò)服務(wù)上是幾乎不可或缺的重要安全技術(shù),你所打開(kāi)的網(wǎng)頁(yè)上面顯示有小鎖標(biāo)示,說(shuō)明站點(diǎn)就已經(jīng)安裝了 SSL證書(shū) 。安裝SSL證書(shū),意味著任何網(wǎng)站用戶(hù)都可以安全的訪問(wèn)服務(wù)器的內(nèi)容。SSL證書(shū)在保證網(wǎng)絡(luò)安全方面發(fā)揮著重要的作用,為了確

    2024年02月08日
    瀏覽(35)
  • 安裝完SSL證書(shū)之后會(huì)過(guò)期嗎?

    在建立安全的互聯(lián)網(wǎng)連接時(shí), SSL證書(shū) 被廣泛應(yīng)用于加密數(shù)據(jù)傳輸,保護(hù)用戶(hù)隱私和敏感信息的安全。然而,SSL證書(shū)并不是永久有效的,它們都有一個(gè)特定的有效期。本文將詳細(xì)介紹SSL證書(shū)的有效期,解釋為什么它們會(huì)過(guò)期以及如何管理證書(shū)更新,以確保持續(xù)的安全保護(hù)。

    2024年02月10日
    瀏覽(25)
  • 阿里云ssl免費(fèi)數(shù)字證書(shū)快過(guò)期 如何更換

    阿里云ssl免費(fèi)數(shù)字證書(shū)快過(guò)期 如何更換

    數(shù)字證書(shū)管理服務(wù)-ssl證書(shū) 此處記錄本地的下載路徑 /Users/dorsey/Downloads/10791167_lzzabc.cn_nginx/lzzabc.cn.pem? /Users/dorsey/Downloads/10791167_lzzabc.cn_nginx/lzzabc.cn.key 找到ssl存放位置? ? /www/https/lzzabc.cn.pem??/www/https/lzzabc.cn.key ?mv admin.lzzabc.cn.pem admin2.lzzabc.cn.pem 命令為? scp 本地用戶(hù)名@IP地址

    2024年02月14日
    瀏覽(25)
  • https 的ssl證書(shū)過(guò)期處理解決方案(lighthttpd)

    https 的ssl證書(shū)過(guò)期處理解決方案(lighthttpd)

    更換證書(shū):lighthttpd 配置文件位置:/opt/vmware/etc/lighttpd/lighttpd.conf? ? ?(配置文件的最底部? ?G快速來(lái)到底部) 方案一:阿里云申請(qǐng)免費(fèi)的證書(shū) 這里公司內(nèi)網(wǎng)環(huán)境沒(méi)有配置域名,可以創(chuàng)建一個(gè)臨時(shí)域名(vim /etc/hosts )域名:www.zyg.com? 這里先聲明:思路是錯(cuò)誤的 其下有錯(cuò)誤

    2024年02月11日
    瀏覽(25)
  • 【Github】自動(dòng)監(jiān)測(cè) SSL 證書(shū)過(guò)期的輕量級(jí)監(jiān)控方案 - Domain Admin

    【Github】自動(dòng)監(jiān)測(cè) SSL 證書(shū)過(guò)期的輕量級(jí)監(jiān)控方案 - Domain Admin

    在現(xiàn)代的企業(yè)網(wǎng)絡(luò)中,網(wǎng)站安全和可靠性是至關(guān)重要的。一個(gè)不注意的SSL證書(shū)過(guò)期可能導(dǎo)致網(wǎng)站出現(xiàn)問(wèn)題,給公司業(yè)務(wù)帶來(lái)嚴(yán)重的影響。針對(duì)這個(gè)問(wèn)題,手動(dòng)檢測(cè)每個(gè)域名和機(jī)器的證書(shū)狀態(tài)需要花費(fèi)大量的時(shí)間和精力。為了解決這個(gè)問(wèn)題,我想向大家介紹一個(gè)自動(dòng)監(jiān)測(cè)SSL證書(shū)

    2024年02月15日
    瀏覽(18)
  • Docker部署開(kāi)源密碼管理器Bitwarden, 并申請(qǐng)免費(fèi)ssl證書(shū)自動(dòng)刷新永不過(guò)期

    Docker部署開(kāi)源密碼管理器Bitwarden, 并申請(qǐng)免費(fèi)ssl證書(shū)自動(dòng)刷新永不過(guò)期

    GitHub傳送陣 由于我的安全習(xí)慣,我基本上不會(huì)在不同的應(yīng)用程序上使用相同的密碼。這使我需要在備忘錄上記錄大量的賬號(hào)密碼,每次登錄系統(tǒng)時(shí)需要檢索備忘錄,這很麻煩。雖然Chrome的密碼管理器也可以使用,但是其功能過(guò)于簡(jiǎn)單,無(wú)法記錄其他非Web系統(tǒng)的賬號(hào)。 最近加

    2024年02月06日
    瀏覽(15)
  • curl請(qǐng)求https證書(shū)過(guò)期的問(wèn)題:SSL certificate problem: certificate has expired

    寫(xiě)了兩個(gè)系統(tǒng),系統(tǒng)A使用 curl 去請(qǐng)求系統(tǒng)B,但是不知道為什么會(huì)報(bào)錯(cuò) SSL certificate problem: certificate has expired 系統(tǒng)A使用了 https 但是系統(tǒng)B沒(méi)有使用 https 系統(tǒng)A的SSL并未過(guò)期,而且在兩個(gè)系統(tǒng)在同一臺(tái)服務(wù)器時(shí)并未報(bào)錯(cuò),所以不是SSL證書(shū)的問(wèn)題 解決辦法: 關(guān)閉curl對(duì)證書(shū)驗(yàn)證,可

    2024年02月16日
    瀏覽(24)
  • 微信小程序控制臺(tái) 報(bào)錯(cuò) 對(duì)應(yīng)的服務(wù)器證書(shū)無(wú)效 控制臺(tái)輸入 showRequestInfo() 可以獲取更詳細(xì)信息 原因是ssl證書(shū)過(guò)期 重新申請(qǐng)即可

    微信小程序控制臺(tái) 報(bào)錯(cuò) 對(duì)應(yīng)的服務(wù)器證書(shū)無(wú)效 控制臺(tái)輸入 showRequestInfo() 可以獲取更詳細(xì)信息 原因是ssl證書(shū)過(guò)期 重新申請(qǐng)即可

    微信小程序控制臺(tái) 報(bào)錯(cuò) 對(duì)應(yīng)的服務(wù)器證書(shū)無(wú)效??刂婆_(tái)輸入 showRequestInfo() 可以獲取更詳細(xì)信息 報(bào)錯(cuò)原因:域名下的SSL證書(shū)過(guò)期 我這邊報(bào)錯(cuò)的原因是ssl證書(shū)過(guò)期 重新申請(qǐng)后就好了,但也有本身域名申請(qǐng)的就有問(wèn)題的,重新根據(jù)規(guī)范去申請(qǐng)域名 解決方式:重新申請(qǐng)SSL證書(shū) 如

    2024年02月12日
    瀏覽(28)
  • python linux系統(tǒng)巡檢腳本

    背景: 因?yàn)榉?wù)器很多,剛開(kāi)始一臺(tái)一臺(tái)手動(dòng)巡檢,效率很低,于是我想能不能寫(xiě)個(gè)工具實(shí)現(xiàn)一勞永逸,于是我想到了python ,python 具有豐富的類(lèi)庫(kù),且語(yǔ)言簡(jiǎn)潔,作為運(yùn)維使用來(lái)說(shuō)比較方便 上代碼 不足之處還望批評(píng)指正

    2024年01月21日
    瀏覽(13)
  • ssl證書(shū)到期監(jiān)控腳本,通過(guò)企業(yè)微信提前一個(gè)月通知提醒

    ????????以下是一個(gè)簡(jiǎn)單的SSL證書(shū)到期監(jiān)控腳本,它可以檢查指定域名的SSL證書(shū)是否將在一個(gè)月內(nèi)到期,并通過(guò)企業(yè)微信應(yīng)用程序發(fā)送通知。該腳本使用 openssl 命令檢查證書(shū)到期日期,并使用 curl 命令發(fā)送企業(yè)微信應(yīng)用程序消息。 ???????? 在這個(gè)腳本中,您需要將以下

    2024年02月16日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包