#!/bin/bash # Настройки CERT_DIR="$HOME/certs" CA_NAME="myrootca" DAYS=3650 # 10 лет # Цвета GREEN='\033[0;32m' RED='\033[0;31m' NC='\033[0m' echo "Генерация корневого сертификата (Root CA)..." # 1. Создание директории mkdir -p "$CERT_DIR" cd "$CERT_DIR" || exit 1 # Проверка: если CA уже существует, предупреждаем if [ -f "${CA_NAME}.crt" ] && [ -f "${CA_NAME}.key" ]; then echo -e "${RED}Внимание!${NC} Файлы ${CA_NAME}.crt и ${CA_NAME}.key уже существуют." read -p "Перезаписать их? (это аннулирует все ранее выданные сертификаты) [y/N]: " confirm if [[ ! $confirm =~ ^[Yy]$ ]]; then echo "Отменено." exit 0 fi fi # 2. Генерация приватного ключа (4096 бит) echo "Генерация приватного ключа..." openssl genrsa -out "${CA_NAME}.key" 4096 2>/dev/null chmod 600 "${CA_NAME}.key" # Защита ключа # 3. Генерация самоподписанного сертификата echo "Генерация корневого сертификата..." openssl req -x509 -new -nodes \ -key "${CA_NAME}.key" \ -sha256 \ -days ${DAYS} \ -out "${CA_NAME}.crt" \ -subj "/C=RU/ST=State/L=City/O=MyOrg/CN=TrueNAS Root CA" # Проверка результата if [ -f "${CA_NAME}.crt" ]; then echo -e "${GREEN}Успешно!${NC}" echo "Файлы созданы в: $CERT_DIR" echo " Ключ: ${CA_NAME}.key (храните в секрете!)" echo " Серт: ${CA_NAME}.crt (установите этот файл на все клиентские устройства)" echo "" echo "Информация о сертификате:" openssl x509 -in "${CA_NAME}.crt" -noout -subject -dates else echo -e "${RED}Ошибка при создании сертификата.${NC}" exit 1 fi