shell腳本檢查域名證書是否過(guò)期的流程分析
最近公司的域名準(zhǔn)備過(guò)期了,防止用戶訪問(wèn)的時(shí)候出現(xiàn)異常,所以最近我們準(zhǔn)備替換相關(guān)網(wǎng)站證書為最新的。
(一般HTTPS證書有效期為1年,證書過(guò)期后或者該證書不是該域名的有效證書時(shí),在瀏覽器中訪問(wèn)會(huì)出現(xiàn)如下提示,這時(shí)候如果還是要訪問(wèn)只能通過(guò)點(diǎn)擊"高級(jí)",忽略風(fēng)險(xiǎn)繼續(xù)訪問(wèn))
我們這里有些域名是直接解析到自己的業(yè)務(wù)機(jī)器上的,并沒(méi)有經(jīng)過(guò)運(yùn)維管理的nginx再來(lái)做轉(zhuǎn)發(fā),所以針對(duì)這部分域名,就需要的單獨(dú)到業(yè)務(wù)機(jī)器上下載最新的域名證書,然后替換了一下證書,并重啟一下nginx (nginx -s reload
) 。
這里替換證書的時(shí)候,我遇到了一個(gè)坑,就是之前有些域名并不支持https的,然后我就打算換成支持https。結(jié)果按照原來(lái)的方式配置了https,訪問(wèn)的時(shí)候報(bào)不安全,提示使用了舊版tsl1.0或tsl1.1的協(xié)議,我確保了該域名的協(xié)議方式已經(jīng)修改了,但是瀏覽器訪問(wèn)的時(shí)候,還是提示不安全,網(wǎng)上找了一段時(shí)間,才知道要nginx所有的域名配置都修改了,才會(huì)生效的,不然nginx 有可能取某個(gè) 域名配置的ssl 配置來(lái)連接ssl,但是最新的域名下的ssl配置不生效。
按F12打開開發(fā)者模式,切到 “Security” tab下頁(yè)面可以看到不安全的原因,如果是使用了舊版tsl1.0或tsl1.1的協(xié)議,則在“Connection”中顯示使用了TSL1.0或者TSL1.1的協(xié)議。下圖的例子是表示無(wú)法信任服務(wù)器,因?yàn)槲刺峁┯行У淖C書。
理論上所有域名都統(tǒng)一由運(yùn)維部門來(lái)管理,直接解析到運(yùn)維的nginx 再轉(zhuǎn)發(fā)到自己的業(yè)務(wù)機(jī)器才是比較好的方案,不然會(huì)導(dǎo)致域名不好管理。但是很多歷史域名還沒(méi)時(shí)間去修改,就只能手動(dòng)替換。
這個(gè)域名數(shù)量會(huì)有點(diǎn)多,而且也不知道還有哪些域名還沒(méi)替換的,因此計(jì)劃用shell腳本去檢查,并且可以將該shell腳本設(shè)置為定時(shí)任務(wù),每個(gè)月或每天定時(shí)檢查一下,如果有域名要過(guò)期了,則告警出來(lái)。在網(wǎng)上找了一下相關(guān)資料,再根據(jù)自己的需求,改造了一版的shell腳本如下:
#!/bin/bash # 檢測(cè)https證書有效 echo '開始檢查 https證書有效期 ' # 先寫域名內(nèi)容到文件中,再讀取文件檢查證書是否過(guò)期了 # 先清空文件 echo '' > /tmp/https_list.txt # 這里替換為自己的檢查的域名即可 echo 'www.baidu.com' >> /tmp/https_list.txt echo 'www.bing.com' >> /tmp/https_list.txt echo 'www.google.com' >> /tmp/https_list.txt source /etc/profile # 定義錯(cuò)誤的域名 errorDominStr="" while read line; do echo "=====================================================================================" echo "當(dāng)前檢測(cè)的域名:" $line end_time=$(echo | timeout 1 openssl s_client -servername $line -connect $line:443 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | awk -F '=' '{print $2}' ) ([ $? -ne 0 ] || [[ $end_time == '' ]]) && echo '該域名鏈接不上,跳到下一個(gè)域名' && continue end_times=`date -d "$end_time" +%s ` current_times=`date -d "$(date -u '+%b %d %T %Y GMT') " +%s ` let left_time=$end_times-$current_times days=`expr $left_time / 86400` echo "剩余天數(shù): " $days [ $days -lt 60 ] && echo "https 證書有效期少于60天,存在風(fēng)險(xiǎn)" && errorDominStr="$errorDominStr \n $line" done < /tmp/https_list.txt echo -e "準(zhǔn)備過(guò)期的域名為: \n $errorDominStr" if [ "$errorDominStr" = "" ] then echo "不包含準(zhǔn)備過(guò)期的域名" else echo "包含準(zhǔn)備過(guò)期的域名" && exit 10 fi echo "Good bye!" exit 0
主要的流程就是讀取文件中的域名,然后進(jìn)行https訪問(wèn)獲取到證書過(guò)期的時(shí)間,如果域名連接不上,則會(huì)直接跳過(guò),如果該域名證書過(guò)期時(shí)間小于 60 天,則匯總起來(lái),最后判斷是否包含準(zhǔn)備過(guò)期的域名,如果包含則異常退出exit 10
。
運(yùn)行后的結(jié)果如下:
參考資料:
https://blog.51cto.com/lee90/2410670 shell腳本檢測(cè)https證書有效期
https://python.01314.cn/201812519.html 使用python檢查SSL證書到期情況
到此這篇關(guān)于shell腳本檢查域名證書是否過(guò)期的流程分析的文章就介紹到這了,更多相關(guān)shell腳本檢查域名證書內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Nginx?CertBot配置HTTPS泛域名證書Debian及常見(jiàn)問(wèn)題
- python腳本監(jiān)聽域名證書過(guò)期時(shí)間并通知消息到釘釘(最新推薦)
- iis提示尚未創(chuàng)建默認(rèn)SSL站點(diǎn),若要支持不帶SNI 功能的瀏覽器,建議創(chuàng)建一個(gè)默認(rèn)SSL站點(diǎn)
- IISCrypto(SSL/TLS一鍵配置工具) iis服務(wù)器如何開啟tls v1.2協(xié)議
- 一個(gè)SSL證書在線轉(zhuǎn)換工具以及IIS7環(huán)境下開通https的方法
- IIS站點(diǎn)綁定/切換SSL證書的實(shí)現(xiàn)
- IIS10服務(wù)器安裝SSL證書的圖文教程
- iis服務(wù)器如何安裝ssl證書
- IIS服務(wù)器配置阿里云https(SSL)證書的方法
- Microsoft?iis服務(wù)器安裝ssl證書(https)的簡(jiǎn)單方法
- IIS綁定SSL證書的方法(圖文詳解)
- 制作能在nginx和IIS中使用的ssl證書
- 在win2008 r2 英文版 IIS7.5上配置Https,SSL的方法
- 有了SSL證書,如何在IIS環(huán)境下部署https
- startssl申請(qǐng)SSL證書 并且配置 iis 啟用https協(xié)議
- win2000服務(wù)器在IIS中使用SSL配置HTTPS網(wǎng)站
- IIS7下配置SSL的方法分析
- World Wide Web Publishing 服務(wù)嘗試刪除 IIS 所有的 SSL 配置數(shù)據(jù)失敗的幾種方法
- windows server 2019 IIS10配置SSL或更新域名證書(https)
相關(guān)文章
Shell命令之?dāng)?shù)組表示語(yǔ)法學(xué)習(xí)
這篇文章主要為大家介紹了Shell命令之?dāng)?shù)組表示語(yǔ)法學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05linux定時(shí)任務(wù)出現(xiàn)command not found解決辦法
這篇文章主要介紹了 linux定時(shí)任務(wù)出現(xiàn)command not found解決辦法的相關(guān)資料,需要的朋友可以參考下2017-05-05shell簡(jiǎn)單處理mysql查詢結(jié)果的方法
今天小編就為大家分享一篇shell簡(jiǎn)單處理mysql查詢結(jié)果的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06shell腳本實(shí)現(xiàn)輸入密碼顯示星號(hào)
本文給大家分享使用shell腳本實(shí)現(xiàn)輸入密碼顯示星號(hào)的腳本寫法,在文章末尾給大家補(bǔ)充了shell輸入密碼時(shí)關(guān)閉屏幕回顯的實(shí)現(xiàn)方法,需要的朋友參考下吧2017-01-01