#!/bin/bash # Определяем путь к файлу .env (в той же папке, что и скрипт) ENV_FILE="$(dirname "$0")/.env" # Проверяем, существует ли файл .env, и загружаем его if [ -f "$ENV_FILE" ]; then source "$ENV_FILE" else echo "Ошибка: Файл конфигурации $ENV_FILE не найден!" exit 1 fi # ПРОВЕРКА НАЛИЧИЯ УЖЕ ГОТОВОГО КОРНЕВОГО СЕРТИФИКАТА if [ -f "root_ca.key" ] || [ -f "root_ca.crt" ]; then echo "Внимание: Файлы Корневого сертификата (root_ca.key/crt) УЖЕ СУЩЕСТВУЮТ!" echo "⚠️ ПЕРЕЗАПИСЬ КОРНЯ СЛОМАЕТ ДОВЕРИЕ КО ВСЕМ ВЫПУЩЕННЫМ РАНЕЕ ПРОМЕЖУТОЧНЫМ И ДОМЕННЫМ СЕРТИФИКАТАМ!" echo "" 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 echo "Продолжаем генерацию и перезапись Корневого ЦС..." 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}" echo "" # Запрашиваем подтверждение у пользователя (Y - да, n - нет) read -p "Хотите установить сертификат в систему как доверенный? [Y/n]: " response # Переводим ответ в нижний регистр для надежности response=$(echo "$response" | tr '[:upper:]' '[:lower:]') # Если пользователь нажал Enter или ввел y/yes if [[ -z "$response" || "$response" =~ ^(y|yes)$ ]]; then echo "Установка сертификата..." if [ "$EUID" -ne 0 ]; then sudo cp root_ca.crt /usr/local/share/ca-certificates/root_ca.crt sudo update-ca-certificates else cp root_ca.crt /usr/local/share/ca-certificates/root_ca.crt update-ca-certificates fi echo "Сертификат успешно установлен!" else echo "Установка отменена." fi