Баш-скрипт, который проверяет любое доменное имя, указывающее на IP-адрес сервера, и автоматически генерирует бесплатный SSL от Let’s Encrypt [закрыто]

Вопрос или проблема

У меня есть сервер Ubuntu с Wildcard DNS, который обрабатывает любые доменные имена, указывающие на сервер NS1 и NS2. Доменное имя отображает стандартную страницу Apache var/www/html.

Мне нужен Bash-скрипт, который проверяет любое доменное имя, указывающее на IP-адрес сервера, и автоматически генерирует бесплатный SSL LetsEncrypt.

Ответ или решение

Создание скрипта на Bash для автоматической проверки доменов, указывающих на ваш сервер, и генерации бесплатного SSL-сертификата от Let’s Encrypt — задача вполне выполнимая и полезная, особенно для серверов с использованием wildcard DNS. Домены, которые указывают на ваш сервер, могут быть обработаны для генерации сертификатов, что поможет обеспечить безопасность ваших веб-приложений.

Основные шаги для реализации скрипта

  1. Проверка доменов: Используйте dig или nslookup, чтобы проверить, какие домены указывают на ваш сервер.
  2. Генерация SSL-сертификатов: Используйте certbot от Let’s Encrypt для генерации и установки сертификатов.
  3. Настройка веб-сервера: Убедитесь, что ваш веб-сервер (например, Apache или Nginx) настроен корректно для работы с новыми сертификатами.

Пример Bash-скрипта

Вот пример Bash-скрипта, который осуществляет описанные шаги. Поскольку задача требует определенных прав (например, прав на создание сертификатов), убедитесь, что вы запускаете скрипт с правами суперпользователя (root).

#!/bin/bash

# Параметры
DOMAINS_FILE="/path/to/domains.txt" # Файл с доменами
WEBROOT="/var/www/html" # Корневая папка вашего веб-сервера
EMAIL="youremail@example.com" # Замените на свой email для уведомлений

# Проверка наличия необходимых инструментов
if ! command -v certbot &> /dev/null; then
    echo "certbot не установлен. Установите его, прежде чем продолжить."
    exit 1
fi

# Проверка и генерация сертификатов
while read -r domain; do
    echo "Проверка домена: $domain"
    # Проверка соответствия IP-адреса домена
    if [[ "$(dig +short $domain)" == "$(curl -s ifconfig.me)" ]]; then
        echo "Домен $domain указывает на этот сервер. Генерация SSL-сертификата..."
        # Генерация сертификата
        certbot certonly --webroot -w "$WEBROOT" -d "$domain" --email "$EMAIL" --agree-tos --non-interactive
        if [[ $? -eq 0 ]]; then
            echo "Сертификат для $domain успешно создан."
        else
            echo "Ошибка при создании сертификата для $domain."
        fi
    else
        echo "Домен $domain не указывает на этот сервер."
    fi
done < "$DOMAINS_FILE"

echo "Проверка завершена."

Настройка среды

  1. Создание файла domains.txt: Поместите все домены, которые вы хотите проверить, в файл domains.txt, по одному на строку.
  2. Установка certbot: Если certbot не установлен, его легко установить с помощью пакетного менеджера, например, для Ubuntu:
    sudo apt update
    sudo apt install certbot
  3. Причина использования --webroot: Этот метод позволяет легко и быстро проверять владение доменом через HTTP.

Заключение

Использование такого скрипта не только облегчает работу с SSL-сертификатами, но и повышает безопасность ваших веб-сайтов. Следующее, что вам нужно будет сделать, — это настроить автоматическое обновление сертификатов, чтобы они всегда оставались актуальными. Для этого вы можете использовать cron для регулярного выполнения вашего скрипта или встроенные функции certbot по автоматическому обновлению сертификатов.

Обратите внимание, что скрипт требует доработки в зависимости от ваших специфических требований и конфигурации сервера.

Оцените материал
Добавить комментарий

Капча загружается...