From 48b4ab7f96f90564850494068db4add7cc9ac7df Mon Sep 17 00:00:00 2001 From: iqubik Date: Sat, 4 Apr 2026 23:20:02 +0300 Subject: [PATCH] =?UTF-8?q?fix(install-custom):=20=D0=BF=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=BA=D0=B0=20=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8=20=D1=81=D1=83=D1=89=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D1=83=D1=8E=D1=89=D0=B8=D1=85=20=D1=81=D0=B5=D1=80=D1=82?= =?UTF-8?q?=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=82=D0=BE=D0=B2=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install-custom.sh | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/install-custom.sh b/install-custom.sh index 54b8ff0..ae5c044 100644 --- a/install-custom.sh +++ b/install-custom.sh @@ -265,10 +265,36 @@ case "$ssl_choice" in LE_KEY="/etc/letsencrypt/live/$UI_HOST/privkey.pem" if [[ -f "$LE_CERT" && -f "$LE_KEY" ]]; then - log "Найдены существующие сертификаты для $UI_HOST." - USE_SSL=true - CERT_PATH="$LE_CERT" - KEY_PATH="$LE_KEY" + # Проверяем что сертификат не истёк и ключ соответствует + if openssl x509 -checkend 0 -noout -in "$LE_CERT" 2>/dev/null && \ + openssl x509 -noout -modulus -in "$LE_CERT" 2>/dev/null | md5sum > /tmp/cert_hash && \ + openssl rsa -noout -modulus -in "$LE_KEY" 2>/dev/null | md5sum > /tmp/key_hash && \ + diff -q /tmp/cert_hash /tmp/key_hash >/dev/null 2>&1; then + log "Найдены валидные сертификаты для $UI_HOST." + USE_SSL=true + CERT_PATH="$LE_CERT" + KEY_PATH="$LE_KEY" + else + warn "Найдены сертификаты для $UI_HOST, но они невалидны. Перегенерируем." + # Удаляем старые и генерируем новые + rm -rf "/etc/letsencrypt/live/$UI_HOST" + mkdir -p "/etc/letsencrypt/live/$UI_HOST" + openssl req -x509 -nodes -days 365 \ + -newkey rsa:2048 \ + -keyout "/etc/letsencrypt/live/$UI_HOST/privkey.pem" \ + -out "/etc/letsencrypt/live/$UI_HOST/fullchain.pem" \ + -subj "/CN=$UI_HOST" \ + -addext "subjectAltName=IP:$UI_HOST" 2>/dev/null + if [[ -f "$LE_CERT" && -f "$LE_KEY" ]]; then + USE_SSL=true + CERT_PATH="$LE_CERT" + KEY_PATH="$LE_KEY" + log "Self-signed сертификат перегенерирован для $UI_HOST" + warn "Браузер будет предупреждать — это нормально для тестов." + else + warn "Не удалось сгенерировать сертификат. Переключение на HTTP." + fi + fi else log "Получение Let's Encrypt сертификата для $UI_HOST..." read -e -p "Email для уведомлений Let's Encrypt: " LE_EMAIL