From 0da4ffcb7a35a56ee60a92f5b63323f1ab35b460 Mon Sep 17 00:00:00 2001 From: valitovgaziz Date: Tue, 8 Jul 2025 13:13:58 +0500 Subject: [PATCH] new file: certbot/scripts/checkRenewCerts.sh modified: certbot/scripts/init-certbot.sh add renamed: certbot/scripts/renewAllCerts.sh -> certbot/scripts/renewValitovGazizCert.sh new file: certbot/scripts/renewYalarbaCert.sh valitovgaziz domen renew&init scripts added checkRenewCerts for both domains --- certbot/scripts/checkRenewCerts.sh | 73 +++++++++++++++++++ certbot/scripts/init-certbot.sh | 15 ++-- ...ewAllCerts.sh => renewValitovGazizCert.sh} | 0 certbot/scripts/renewYalarbaCert.sh | 7 ++ 4 files changed, 88 insertions(+), 7 deletions(-) create mode 100644 certbot/scripts/checkRenewCerts.sh rename certbot/scripts/{renewAllCerts.sh => renewValitovGazizCert.sh} (100%) create mode 100644 certbot/scripts/renewYalarbaCert.sh diff --git a/certbot/scripts/checkRenewCerts.sh b/certbot/scripts/checkRenewCerts.sh new file mode 100644 index 0000000..a12df00 --- /dev/null +++ b/certbot/scripts/checkRenewCerts.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# Функция проверки локального сертификата +check_local_cert() { + local cert_file=$1 + local days_to_check=$2 + + if [[ ! -f "$cert_file" ]]; then + echo "Ошибка: Файл сертификата '$cert_file' не найден." + return 1 + fi + + # Получаем дату истечения сертификата + expiry_date=$(openssl x509 -in "$cert_file" -noout -dates | grep "notAfter=" | cut -d= -f2) + + if [[ -z "$expiry_date" ]]; then + echo "Ошибка: не удалось получить дату истечения сертификата." + return 1 + fi + + # Преобразуем дату истечения в UNIX-время + expiry_unix=$(date -d "$expiry_date" +%s) + + # Текущая дата в UNIX-времени + current_unix=$(date +%s) + + # Вычисляем разницу между текущей датой и датой истечения + days_left=$(( ($expiry_unix - $current_unix) / 86400 )) + + if ((days_left <= 0)); then + echo "Сертификат '$cert_file' истек!" + return 0 + elif ((days_left <= days_to_check)); then + echo "Предупреждение: Сертификат '$cert_file' истекает через $days_left дней." + return 0 + else + echo "Сертификат '$cert_file' действителен ещё $days_left дней." + return 1 + fi +} + +# Проверка первого сертификата и запуск соответствующего сценария обновления +check_first_cert() { + local first_cert="/etc/letsencrypt/live/yalarba.ru/cert.pem" + local first_script="/opt/renewYalarbaCert.sh" + local warning_days=2 + + if check_local_cert "$first_cert" "$warning_days"; then + echo "Запускаю обновление первого сертификата..." + "$first_script" + fi +} + +# Проверка второго сертификата и запуск соответствующего сценария обновления +check_second_cert() { + local second_cert="/etc/letsencrypt/live/valitovgaziz.ru/cert.pem" + local second_script="/opt/renewValitovGazizCert.sh" + local warning_days=2 + + if check_local_cert "$second_cert" "$warning_days"; then + echo "Запускаю обновление второго сертификата..." + "$second_script" + fi +} + +# Основная функция для последовательной проверки обоих сертификатов +main() { + check_first_cert + check_second_cert +} + +# Запуск основной функции +main \ No newline at end of file diff --git a/certbot/scripts/init-certbot.sh b/certbot/scripts/init-certbot.sh index e7b5733..08392a2 100644 --- a/certbot/scripts/init-certbot.sh +++ b/certbot/scripts/init-certbot.sh @@ -2,16 +2,17 @@ # Проверяем наличие сертификатов if [ ! -d "/etc/letsencrypt/live/${DOMAINS}" ]; then - echo "Получаем новые сертификаты..." + echo "Получаем новые сертификаты yalarba ..." certbot certonly --webroot \ --config /etc/letsencrypt/config/certbot.ini \ -w /var/www/certbot \ -d ${DOMAINS} fi -# Бесконечный цикл для обновления сертификатов -while :; do - echo "Проверяем необходимость обновления..." - certbot renew - sleep 12h -done +if [ ! -d "/etc/letsencrypt/live/${DOMAINS_valitovgaziz}" ]; then + echo "Получаем новые сертификаты valitovgaziz ..." + certbot certonly --webroot \ + --config /etc/letsencrypt/config/certbot.ini \ + -w /var/www/certbot \ + -d ${DOMAINS_valitovgaziz} +fi \ No newline at end of file diff --git a/certbot/scripts/renewAllCerts.sh b/certbot/scripts/renewValitovGazizCert.sh similarity index 100% rename from certbot/scripts/renewAllCerts.sh rename to certbot/scripts/renewValitovGazizCert.sh diff --git a/certbot/scripts/renewYalarbaCert.sh b/certbot/scripts/renewYalarbaCert.sh new file mode 100644 index 0000000..5675ca7 --- /dev/null +++ b/certbot/scripts/renewYalarbaCert.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +echo "Получаем новые сертификаты..." +certbot certonly --webroot \ + --config /etc/letsencrypt/config/certbot.ini \ + -w /var/www/certbot \ + -d ${DOMAINS} \ No newline at end of file