Настройка SSL-сертификата Lets Encrypt с использованием Certbot и Apache в Debian Linux
В данной статье мы рассмотрим пошаговый процесс получения, установки и автоматического обновления SSL-сертификата Let’s Encrypt для домена с использованием Certbot и веб-сервера Apache на Debian Linux.
Рассмотрим получение SSL-сертификата с использованием метода webroot для подтверждения владения доменом. Это делается с помощью флага --webroot, который указывает путь к корневому каталогу веб-сервера.
Для выпуска сертификата необходим установленный и настроенный 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/letsencryptCertbot использует протокол ACME для проверки владения доменом. Для этого необходимо настроить доступ к специальной директории .well-known/acme-challenge. Создаем конфигурацию /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
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/
RewriteRule ^/(.*)$ https://example.com/$1 [R=301,L]
</VirtualHost>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:
- Создаст файлы проверки в директории
/var/www/letsencrypt/.well-known/acme-challenge/. - Пройдет проверку владения доменом.
- Сохранит сертификаты в директорию
/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 автоматически обновит сертификаты при необходимости.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.