shell: 判斷憑證到期日小於30天時進行憑證更新

由於 Let’s Encryp 的憑證時效只有 90 天,自動更新有時候並非那麼理想,故想到先查憑證剩餘到期時間,低於某個時間後再進行更新

到期時間計算參考以下網址

https://askubuntu.com/questions/1198619/bash-script-to-calculate-remaining-days-to-expire-ssl-certs-in-a-website

取得憑證剩下天數後,再去判斷是否低於需要更新的時間

以下是程式碼


#!/bin/bash
PATH=$PATH:/usr/sbin:/usr/local/bin

website=$1
certificate_file=$(mktemp)
echo -n | openssl s_client -servername "$website" -connect "$website":443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > $certificate_file
date=$(openssl x509 -in $certificate_file -enddate -noout | sed "s/.*=\(.*\)/\1/")
date_s=$(date -d "${date}" +%s)
now_s=$(date -d now +%s)
date_diff=$(( (date_s - now_s) / 86400 ))
echo "$website will expire in $date_diff days"
expire_day=`expr $date_diff`
echo $expire_day
if [ $expire_day -lt 28 ]
then
        echo $expire_day
        certbot renew
else
        echo "Dont need RENEW"
fi



留言