57 lines
2.0 KiB
Bash
Executable File
57 lines
2.0 KiB
Bash
Executable File
#!/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
|