This commit is contained in:
Bellord
2026-10-01 16:13:02 +03:00
parent 6806881e8e
commit 0ae9fcdcba
4 changed files with 204 additions and 18 deletions
+33 -15
View File
@@ -11,33 +11,40 @@ else
exit 1
fi
# Флаг, управляющий запуском генерации OpenSSL
NEED_GENERATION=true
# ПРОВЕРКА НАЛИЧИЯ УЖЕ ГОТОВОГО КОРНЕВОГО СЕРТИФИКАТА
if [ -f "root_ca.key" ] || [ -f "root_ca.crt" ]; then
echo "Внимание: Файлы Корневого сертификата (root_ca.key/crt) УЖЕ СУЩЕСТВУЮТ!"
echo "⚠️ ПЕРЕЗАПИСЬ КОРНЯ СЛОМАЕТ ДОВЕРИЕ КО ВСЕМ ВЫПУЩЕННЫМ РАНЕЕ ПРОМЕЖУТОЧНЫМ И ДОМЕННЫМ СЕРТИФИКАТАМ!"
echo ""
read -p "Вы абсолютно уверены, что хотите перевыпустить Корневой ЦС? [y/N]: " overwrite_response
read -p "Вы хотите ПЕРЕВЫПУСТИТЬ и перезаписать Корневой ЦС? [y/N]: " overwrite_response
overwrite_response=$(echo "$overwrite_response" | tr '[:upper:]' '[:lower:]')
# По умолчанию (Enter) или при любом ответе, кроме y/yes — выходим
if [[ ! "$overwrite_response" =~ ^(y|yes)$ ]]; then
echo "Генерация отменена. Текущий корневой сертификат сохранен."
exit 0
fi
# Если пользователь ввел y или yes — генерируем заново
if [[ "$overwrite_response" =~ ^(y|yes)$ ]]; then
echo "Продолжаем генерацию и перезапись Корневого ЦС..."
NEED_GENERATION=true
else
# Во всех остальных случаях (включая Enter) — ПРОПУСКАЕМ генерацию, но не выходим из скрипта
echo "Генерация пропущена. Используются существующие файлы сертификата."
NEED_GENERATION=false
fi
fi
# Root certificate (Root CA)
openssl req -x509 -nodes -new -sha512 -days "$CERT_DAYS" \
-newkey rsa:4096 -keyout root_ca.key -out root_ca.crt \
-extfile root_ca.ini -extensions "$ROOT_EXT_SECTION" \
-subj "/C=${CERT_COUNTRY}/L=${CERT_LOCALITY}/O=${CERT_ORG}/CN=${ROOT_CN}"
if [ "$NEED_GENERATION" = true ]; then
echo "Запуск OpenSSL для создания Корневого ЦС..."
openssl req -x509 -nodes -new -sha512 -days "$CERT_DAYS" \
-newkey rsa:4096 -keyout root_ca.key -out root_ca.crt \
-extfile root_ca.ini -extensions "$ROOT_EXT_SECTION" \
-subj "/C=${CERT_COUNTRY}/L=${CERT_LOCALITY}/O=${CERT_ORG}/CN=${ROOT_CN}"
fi
echo ""
# Запрашиваем подтверждение у пользователя (Y - да, n - нет)
read -p "Хотите установить сертификат в систему как доверенный? [Y/n]: " response
# Переводим ответ в нижний регистр для надежности
@@ -47,15 +54,26 @@ response=$(echo "$response" | tr '[:upper:]' '[:lower:]')
if [[ -z "$response" || "$response" =~ ^(y|yes)$ ]]; then
echo "Установка сертификата..."
# Проверяем, есть ли вообще утилита update-ca-certificates в вашей Linux-системе
if ! command -v update-ca-certificates &> /dev/null; then
echo "❌ Ошибка: Утилита update-ca-certificates не найдена в этой системе!"
exit 1
fi
TARGET_DIR="/usr/local/share/ca-certificates"
# Проверяем, запущен ли скрипт от root, чтобы использовать sudo при создании папки и копировании
if [ "$EUID" -ne 0 ]; then
sudo cp root_ca.crt /usr/local/share/ca-certificates/root_ca.crt
sudo mkdir -p "$TARGET_DIR"
sudo cp root_ca.crt "$TARGET_DIR/root_ca.crt"
sudo update-ca-certificates
else
cp root_ca.crt /usr/local/share/ca-certificates/root_ca.crt
mkdir -p "$TARGET_DIR"
cp root_ca.crt "$TARGET_DIR/root_ca.crt"
update-ca-certificates
fi
echo "Сертификат успешно установлен!"
echo "✅ Сертификат успешно установлен в локальное Linux-окружение!"
else
echo "Установка отменена."
fi