This commit is contained in:
Bellord
2026-10-01 01:08:37 +03:00
commit 4a750fc910
9 changed files with 352 additions and 0 deletions
+62
View File
@@ -0,0 +1,62 @@
#!/bin/bash
# Определяем путь к файлу .env и загружаем его
ENV_FILE="$(dirname "$0")/.env"
if [ -f "$ENV_FILE" ]; then
source "$ENV_FILE"
else
echo "Ошибка: Файл конфигурации $ENV_FILE не найден!"
exit 1
fi
# Проверяем наличие Промежуточного ЦС для подписи
if [ ! -f "intermediate_ca.crt" ] || [ ! -f "intermediate_ca.key" ]; then
echo "Ошибка: Не найдены файлы intermediate_ca.crt или intermediate_ca.key!"
echo "Сначала запустите скрипт build-intermediate-cert.sh"
exit 1
fi
# Проверяем наличие файла конфигурации SAN
if [ ! -f "issuing_san.ini" ]; then
echo "Ошибка: Файл конфигурации issuing_san.ini не найден!"
exit 1
fi
echo "Генерация универсального ключа и запроса (CSR) по файлу конфигурации..."
# Создаем один общий запрос. В CN подставляем базовый домен из .env
openssl req -new -nodes -newkey rsa:4096 \
-keyout issuing.key -out issuing.csr \
-subj "/C=${CERT_COUNTRY}/L=${CERT_LOCALITY}/O=${CERT_ORG}/CN=${DOMAIN_CN}"
echo "Подпись мультидоменного сертификата через Intermediate CA (на $ISSUING_DAYS дн)..."
# Подписываем, строго используя расширения SAN из файла issuing_san.ini
openssl x509 -req -sha512 -days "$ISSUING_DAYS" \
-extfile issuing_san.ini -extensions "$ISSUING_EXT_SECTION" \
-CA intermediate_ca.crt -CAkey intermediate_ca.key -CAserial intermediate_ca.srl -CAcreateserial \
-in issuing.csr \
-out issuing.crt
echo ""
# Запрашиваем подтверждение сборки пакета для NPM
read -p "Хотите собрать файлы privkey.pem и fullchain.pem? [Y/n]: " npm_response
# Переводим ответ в нижний регистр
npm_response=$(echo "$npm_response" | tr '[:upper:]' '[:lower:]')
# Если пользователь нажал Enter или ввел y/yes
if [[ -z "$npm_response" || "$npm_response" =~ ^(y|yes)$ ]]; then
echo "Сборка универсальных файлов privkey.pem и fullchain.pem..."
# Копируем приватный ключ
cat issuing.key > privkey.pem
# Объединяем доменный и промежуточный сертификаты в единую цепочку (Full Chain)
cat issuing.crt > fullchain.pem
cat intermediate_ca.crt >> fullchain.pem
echo "Файлы сертификата (PEM-контейнеры) готовы в текущей папке:"
echo " -> Приватный ключ: privkey.pem"
echo " -> Цепочка сертификатов: fullchain.pem"
fi
echo ""
echo "✅ Процесс выпуска сертификата успешно завершен!"