#!/bin/bash ############################################################################### # Скрипт для создания и обновления SSL сертификата Let's Encrypt # с использованием DNS-валидации через API reg.ru # # Автор: Фофанов Дмитрий # Дата: 27.10.2025 # Описание: Автоматизация получения wildcard сертификата через Certbot # с использованием DNS-01 challenge и API reg.ru ############################################################################### # ============================================================================== # КОНФИГУРАЦИЯ # ============================================================================== # Учетные данные API reg.ru (получить на https://www.reg.ru/user/account/) REGRU_USERNAME="your_username" # Имя пользователя reg.ru REGRU_PASSWORD="your_password" # Пароль от аккаунта reg.ru # Параметры домена и сертификата DOMAIN="dfv24.com" # Основной домен WILDCARD_DOMAIN="*.dfv24.com" # Wildcard домен EMAIL="admin@dfv24.com" # Email для уведомлений Let's Encrypt # Директории для хранения сертификатов CERT_DIR="/etc/letsencrypt/live/$DOMAIN" CREDENTIALS_DIR="/etc/letsencrypt/credentials" CREDENTIALS_FILE="$CREDENTIALS_DIR/regru.ini" # Логирование LOG_FILE="/var/log/letsencrypt_regru.log" TIMESTAMP=$(date '+%d.%m.%Y %H:%M:%S') # ============================================================================== # ФУНКЦИИ # ============================================================================== # Логирование сообщений log() { echo "[$TIMESTAMP] $1" | tee -a "$LOG_FILE" } # Проверка установки необходимых пакетов check_dependencies() { log "Проверка зависимостей..." # Проверка certbot if ! command -v certbot &> /dev/null; then log "ОШИБКА: certbot не установлен. Установите: apt-get install certbot" exit 1 fi # Проверка curl if ! command -v curl &> /dev/null; then log "ОШИБКА: curl не установлен. Установите: apt-get install curl" exit 1 fi # Проверка jq для обработки JSON if ! command -v jq &> /dev/null; then log "ОШИБКА: jq не установлен. Установите: apt-get install jq" exit 1 fi log "Все зависимости установлены" } # Создание директории для credentials setup_credentials_dir() { log "Настройка директории для учетных данных..." if [ ! -d "$CREDENTIALS_DIR" ]; then mkdir -p "$CREDENTIALS_DIR" chmod 700 "$CREDENTIALS_DIR" fi } # Создание файла с учетными данными для certbot-dns-regru create_credentials_file() { log "Создание файла с учетными данными reg.ru..." cat > "$CREDENTIALS_FILE" <