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.