ssl證書過期監控


ssl證書過期監控

一、需求引入

  之前試過有個網站證書悄悄過期了,上一年不是過年過的特別早么,那個春節關服務的定時腳本竟然忘記關了!!!(幸好領導沒有看到,除非往上翻監控信息,不然上班那會一般只會看到最新的數據庫備份監控信息)

   這玩意實際上是nginx加載了停服務的虛擬配置文件,我就虛構了一個假的端口,proxy_pass 轉過去。至於原端口nginx代理某個靜態網目錄是沒有停的。當時嚇壞了,把人家網站關了那么久耶(0點關到7點)。然后一早起來,我手動開起來了。但發現頁面說是不安全的,除非點擊繼續訪問(算了知道是證書過期,回公司再弄)。這關停的時間內竟然沒有人發現,沒有人投訴,不過有些事情不怕一萬,只怕萬一,如果是一個非常重要的網站,經常有人看的,證書過期了,作為運維的你竟然沒發現,呵呵,你就等着寫故障報告吧~~~是不是細思極恐,所以嘛,做運維就應該要有點前瞻性,不要等事情發生才懂得預防,畢竟,防患於未然會省去后續很多活的

 

二、需求實現

  有兩個腳本都是用openssl去搞的(當然我是抄的,一個抄網上,一個抄前運維的,就改了點就能用了)

1、check_ssl.sh    ——》運行需要接參數,用來做單一域名測試不錯

 1 #!/bin/bash
 2 
 3 # 檢測https證書有效期
 4 if [ $# -ne 1 ]; then
 5    echo "請輸入需要的檢查域名: 例如 /check_ssl.sh www.baidu.com"
 6 else
 7    #參數設置為host
 8    host=$1
 9    #最后到期時間
10    #end_date=`echo |openssl s_client -servername $host  -connet $host:443 2nssl x509 -noout -dates|awk -F '=' '/notAfter/{print $2}'`
11     #最后到期時間轉換為時間戳
12     end_data=`date +%s -d "$(echo |openssl s_client -servername $host  -connect $host:443 2>/dev/null | openssl x509 -noout -dates|awk -F '=' '/notAfter/{print $2}')"`
13     #當前時間戳
14     new_date=$(date +%s)
15     #計算SSL證書截止到現在的過期天數
16     #計算SSL正式到期時間和當前時間的差值
17     days=$(expr $(expr $end_data - $new_date) / 86400)
18     echo -e "\033[31m 您的$host 證書 還有${days}天到期  請謹慎處理 \033[0m"
19 fi

運行腳本: ./check_ssl.sh  檢測域名

結果顯示是這樣的:

 

2、domain_ssl_new.sh ——》這腳本放到計划任務了

前運維寫的,我就直接用了,為了尊重版權,加個后綴叫"new"。

要引入一個domain_ssl_new.txt ,填入你要檢測的域名即可(注意:一行一個域名)

 1 #!/bin/bash
 2 
 3 #監控域名證書到期發送釘釘消息通知
 4 #作者:ljy
 5 #日期:2021/01/27
 6 #版本:v1.0
 7 
 8 PHONE="159xxxx0136"
 9 TOKEN="https://oapi.dingtalk.com/robot/send?access_token=xxx"
10 
11 dir="/home/用戶/scripts/domain"
12 for yuming in `cat ${dir}/domain_ssl_new.txt` #讀取存儲了需要監控的域名文件
13 do
14     END_TIME=$(echo | openssl s_client -servername $yuming  -connect $yuming:443 2>/dev/null | openssl x509 -noout -dates |grep 'After'| awk -F '=' '{print $2}'| awk -F ' +' '{print $1,$2,$4 }')
15 
16     #使用openssl獲取域名的證書情況,然后獲取其中的到期時間
17     END_TIME1=$(date +%s -d "$END_TIME") #將日期轉化為時間戳
18     NOW_TIME=$(date +%s -d "$(date | awk -F ' +'  '{print $2,$3,$6}')") #將目前的日期也轉化為時間戳
19 
20     NEW_TIME=$(($(($END_TIME1-$NOW_TIME))/(60*60*24))) #到期時間減去目前時間再轉化為天數
21 
22     if [ $NEW_TIME -lt 10 ];  #當到期時間小於10天時,發釘釘群告警
23     then
24         curl -H "Content-Type:application/json" -X POST --data '{"msgtype":"text","text":{"content":"域名:'$yuming'   ssl免費證書到期日期,剩余:'$NEW_TIME' 天"} , "at": {"atMobiles": ['${PHONE}'], "isAtAll": false}}' ${TOKEN} > /dev/null 2>&1
25     fi
26 done

 

 

 3、用工具搞:LetsMonitor  ——》貌似要FQ才能打開

提供免費ssl檢測服務,在憑證需要需用或過期前發送提醒(僅限郵件發送,而且只能添加5個域名證書監控,不然要收費)

 

 

## 使用說明,我簡單說下

1、注冊之后,在Contacts上添加要發送的郵箱

 

2、然后打開“Monitors”,設置要監控的域名證書

3、做了個模擬證書過期的小測試,如下設置,然后運行“Run Test”,測試是否能成功發送提醒

測試證書實際過期時間為158天,我這里設置了還剩下160天報警。

(1)

 

 

(2)

 

(3)運行“Run Test”

 

(4)最后QQ郵箱就收到過期提示了

(據說只發一次,所以微信最好開一下QQ郵件提醒,相當於發到微信了)。這工具作為備用提醒還是可以滴,反正也是白嫖,哈哈哈哈~~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM