#!/bin/bash
 
# Шаг 1: Задание переменных для каталогов
CSR_DIR="./k8s-ca"
CORPORATE_CA_DIR="./corporate-pki"
 
echo "=== Эмуляция корпоративного PKI ==="
 
# Шаг 2: Проверка наличия CSR
if [ ! -f "$CSR_DIR/ca.csr" ]; then
    echo "Ошибка: Не найден файл CSR: $CSR_DIR/ca.csr"
    echo "Сначала запустите generate-csr.sh"
    exit 1
fi
 
echo "Найден CSR: $CSR_DIR/ca.csr"
 
# Шаг 3: Подпись CSR корпоративным CA
echo "Подпись CSR корпоративным CA..."
 
# Шаг 4: Копирование конфигурации из CSR для использования в расширениях
CSR_CONFIG="$CSR_DIR/ca-csr.conf"
 
# Шаг 5: Подпись CSR
openssl x509 -req \
  -in "$CSR_DIR/ca.csr" \
  -CA "$CORPORATE_CA_DIR/corporate-ca.crt" \
  -CAkey "$CORPORATE_CA_DIR/corporate-ca.key" \
  -CAcreateserial \
  -out "$CSR_DIR/ca.crt" \
  -days 365 \
  -extensions v3_req \
  -extfile "$CSR_CONFIG"
 
echo "CSR подписан успешно!"
 
# Шаг 6: Создание полной цепочки сертификатов (если нужно)
echo "Создание полной цепочки сертификатов..."
cat "$CSR_DIR/ca.crt" "$CORPORATE_CA_DIR/corporate-ca.crt" > "$CSR_DIR/ca-fullchain.crt"
 
# Шаг 7: Вывод результатов
echo
echo "=== Результаты ==="
echo "Корневой сертификат корпоративного PKI: $CORPORATE_CA_DIR/corporate-ca.crt"
echo "Приватный ключ Kubernetes CA: $CSR_DIR/ca.key"
echo "Подписанный сертификат Kubernetes CA: $CSR_DIR/ca.crt"
echo "Полная цепочка сертификатов: $CSR_DIR/ca-fullchain.crt"
 
# Шаг 8: Проверка
echo
echo "=== Проверка сертификата ==="
echo "Subject:"
openssl x509 -in "$CSR_DIR/ca.crt" -noout -subject
 
echo "Issuer:"
openssl x509 -in "$CSR_DIR/ca.crt" -noout -issuer
 
echo "SAN (Subject Alternative Names):"
openssl x509 -in "$CSR_DIR/ca.crt" -noout -text | grep -A 1 "Subject Alternative Name" || echo "SAN не найдены"
 
echo
echo "=== Готово! ==="
echo "Теперь вы можете использовать:"
echo "  $CSR_DIR/ca.key - приватный ключ"
echo "  $CSR_DIR/ca.crt - подписанный сертификат"
echo "  $CSR_DIR/ca-fullchain.crt - полная цепочка сертификатов"
