Раздел 13.08.2018

Bash-скрипт для проверки срока действия сертификата Let’s Encrypt

Let’s Encrypt выдает бесплатные сертификаты, но на 90 дней. В cron задачу не добавишь, чтобы раз в 90 дней работала. Можно сделать раз в 3 месяца, но это не то. Т.к. всегда получается 1-2 дня, когда сертификат уже не действителен, а задача cron еще не выполнилась. Для такой ситуации и создал bash-скрипт для проверки срока действия сертификата, если сталось 2 дня, то он вызывается скрипт для обновления.

cd ~/private/
DATE_CERT=`openssl x509 -in certs/mysite.com/fullchain.pem -text -noout | grep -Po ': (.+)?GMT'`
SED=`expr "$DATE_CERT" : '^.*\:\s\(.*\).*GMT$'`

R=`date -d "$SED" '+%Y-%m-%d'`
#echo Cert valid date: $R

CHECK_DATE=$(date -d "+3 days")
LAST_DATE=`date -d "$CHECK_DATE" '+%Y-%m-%d'`
#echo 'Control date:   ' $LAST_DATE

if [[ "$R" < "$LAST_DATE" ]] ;
then
    sh update_cert.sh
fi

Путь к fullchain.pem — путь к вашей цепочке сертификатов Let’s Encrypt.