SCROLL
Среднее время на прочтение: 2 мин.

Настройка SSL-сертификата Let’s Encrypt с использованием Certbot и Apache

В данной статье мы рассмотрим пошаговый процесс получения, установки и автоматического обновления SSL-сертификата для домена с использованием Certbot и веб-сервера Apache.

Для выпуска сертификата необходим установленный и настроенный Apache с корректными виртуальным хостом и DNS-записями. На примере ниже будем рассматривать выпуск сертификата для домена — example.com.

Подготовка к выпуску сертификата

Устанавливаем Certbot:

apt-get install certbot -y

Создаем директорию /var/www/letsencrypt, которая будет использоваться для проверки владения доменом и назначаем ей соответствующие права:

mkdir -p /var/www/letsencrypt
chown www-data:www-data /var/www/letsencrypt

Certbot использует протокол ACME для проверки владения доменом. Для этого необходимо настроить доступ к специальной директории .well-known/acme-challenge. Создаем конфигурацию /etc/apache2/conf-available/letsencrypt.conf со следующим содержимым:

/etc/apache2/conf-available/letsencrypt.conf
Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/

<Directory "/var/www/letsencrypt/.well-known/acme-challenge/">
    Options None
    AllowOverride None
    ForceType text/plain
    Order allow,deny
    Allow from all
    RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)"
</Directory>
Строка RedirectMatch 404 разрешает доступ только к файлам, соответствующим шаблону ACME challenge (ровно 43 символа после пути /.well-known/acme-challenge/), тем самым защищает директорию от несанкционированного доступа к другим файлам.

Дополнительно

Если ваш виртуальный хост уже настроен для использования SSL и при обращении к http://example.com происходит редирект на https://example.com, то нужно убедиться, что определённые пути, такие как путь для ACME Challenge, не перенаправляются. Это необходимо для успешного прохождения проверки домена.

Чтобы реализовать это, измените или добавьте указанный ниже блок конфигурации в настройки вашего виртуального хоста в Apache:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

    # Включаем модуль Rewrite для обработки URL-переписывания
    RewriteEngine On

    # Условие: если запрос не начинается с "/.well-known/acme-challenge/", то выполняем редирект
    RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/

    # Правило редиректа всех остальных запросов на HTTPS
    RewriteRule ^/(.*)$ https://example.com/$1 [R=301,L]
</VirtualHost>
Если модуль rewrite не включен в вашем Apache, вы можете включить его командой — a2enmod rewrite && systemctl restart apache2

Тестовый запуск Certbot

Перед выпуском реального сертификата рекомендуется выполнить тестовый запуск, чтобы убедиться, что все настроено правильно. Используйте команду:

certbot certonly --dry-run --webroot -w /var/www/letsencrypt -d example.com -d www.example.com

Параметры команды:

  • --dry-run: выполняет тестовый запуск без выпуска реального сертификата.
  • --webroot: указывает метод проверки владения доменом через веб-сервер.
  • -w /var/www/letsencrypt: указывает путь к директории, где certbot будет размещать файлы проверки.
  • -d example.com -d www.example.com: список доменов, для которых выпускается сертификат.

Если тест прошел успешно, вы увидите сообщение об успешной проверке. Если возникли ошибки, проверьте:

  • Настройки DNS для доменов.
  • Доступность директории /var/www/letsencrypt.
  • Конфигурацию Apache.

Выпуск реального сертификата

После успешного тестового запуска можно получить реальный сертификат. Используйте команду:

certbot certonly --agree-tos --email admin@jakondo.ru --webroot -w /var/www/letsencrypt -d example.com -d www.example.com

Дополнительные параметры:

  • --agree-tos: автоматически соглашается с условиями использования Let’s Encrypt.
  • --email admin@example.com: указывает контактный email для уведомлений (например, о необходимости обновления сертификата).

После выполнения команды certbot:

  1. Создаст файлы проверки в директории /var/www/letsencrypt/.well-known/acme-challenge/.
  2. Пройдет проверку владения доменом.
  3. Сохранит сертификаты в директорию /etc/letsencrypt/live/example.com/.

Настройка автоматического обновления сертификата

Сертификаты Let’s Encrypt действительны 90 дней, поэтому важно настроить их автоматическое обновление.

Настройка хука для обновления

При выпуске сертификата certbot создает файл конфигурации обновления в каталоге /etc/letsencrypt/renewal/. Чтобы Apache перечитывал конфигурацию после обновления сертификата, добавьте параметр renew_hook:

[renewalparams]
...
renew_hook = systemctl reload apache2

Этот параметр указывает, что после успешного обновления сертификата будет выполнен перезапуск apache, чтобы применить изменения.

Проверка обновления

Для проверки работоспособности обновления выполните команду:

certbot renew --dry-run

Если тест прошел успешно, certbot автоматически обновит сертификаты при необходимости.

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.