bg-tutorials

Как установить SSL-сертификат ACME на Apache и NGINX

Если у Вас есть веб-сервер, защита его с помощью HTTPS является основным стандартом. Благодаря протоколу ACME (Automated Certificate Management Environment) Вы можете автоматизировать выпуск и обновление SSL-сертификатов с помощью таких инструментов, как Certbot.

ACME SSL на Apache и Nginx

В этом руководстве Вы узнаете, как установить сертификат ACME на Apache и NGINX с помощью Certbot в различных дистрибутивах Linux. Мы рассмотрим системы на базе Debian и RHEL, включим пояснения, где это необходимо, и проведем Вас через все этапы — от установки до автоматического продления.


Прежде чем начать

Прежде чем приступить к работе, убедитесь, что

  • У Вас есть sudo или root-доступ к Вашему серверу
  • Ваше доменное имя указывает на публичный IP-адрес Вашего сервера через DNS.
  • Порты 80 и 443 открыты в Вашем брандмауэре или в группе безопасности облачного провайдера.
  • Ваша система обновлена и поддерживается

Шаг 1 — Установите Certbot на Вашу ОС

Certbot — это клиент ACME, который мы будем использовать для запроса и обновления SSL-сертификатов. Мы рассмотрим инструкции по настройке для каждой поддерживаемой ОС. Выберите ту, которая соответствует Вашему серверу.

Редакции Ubuntu LTS с APT

Обновите пакеты и установите Certbot с предпочитаемым Вами плагином для веб-сервера:

Apache:

sudo apt update
sudo apt install certbot python3-certbot-apache

NGINX:

sudo apt update
sudo apt install certbot python3-certbot-nginx

Системы Debian с поддержкой APT

Тот же процесс, что и в Ubuntu:

sudo apt update
sudo apt install certbot python3-certbot-apache # for Apache
sudo apt install certbot python3-certbot-nginx # for NGINX

На системах Debian установка Certbot через APT является наиболее простым вариантом. Если Вы предпочитаете использовать Snap (для последней версии), прокрутите страницу вниз до раздела Snap ниже.

AlmaLinux или Rocky Linux (совместимый с RHEL)

Сначала включите хранилище EPEL:

sudo dnf install epel-release
sudo dnf update

Затем установите Certbot с помощью выбранного Вами плагина:

Apache:

sudo dnf install certbot python3-certbot-apache

NGINX:

sudo dnf install certbot python3-certbot-nginx

Альтернатива: Установите Certbot через Snap (все системы)

Если Вам нужна последняя версия непосредственно из источника, используйте Snap.

1. Установите Snap (если он еще не установлен):

sudo apt install snapd # Ubuntu/Debian
sudo dnf install snapd # AlmaLinux/Rocky

2. Установите и соедините Certbot:

sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Дополнительно: Установите Certbot с помощью pip (для пользовательских настроек).

Этот метод предназначен для опытных пользователей или пользовательских сред, в которых пакеты Snap или OS недоступны. Вы должны использовать его только в том случае, если:

  • Вы запускаете Certbot в виртуальной среде
  • Вы работаете с минимальными контейнерами
  • Ваша ОС не поддерживает snapd, apt или dnf в чистом виде

Чтобы установить Certbot с помощью pip:

python3 -m pip install --upgrade certbot

Это установит основной инструмент Certbot, но не настроит автообновление, и не установит плагины Apache или NGINX. Вам нужно будет настроить все вручную

Если Вы не уверены, что это значит, вернитесь назад и воспользуйтесь инструкциями APT, DNF или Snap.

Вы также можете установить плагины (например, NGINX) с помощью pip:

python3 -m pip install certbot-nginx

Используйте pip только в том случае, если Ваша системная среда требует полного контроля или изоляции.


Шаг 2 — Запросите и установите Ваш сертификат ACME

Существует два основных подхода: полностью автоматизированный или индивидуальный для конкретного провайдера с использованием учетных данных EAB (External Account Binding). Оба подхода рассматриваются ниже.

Вариант A: Полностью автоматизированный (стандартный ACME)

Позвольте Certbot заниматься всем — запрашивать, проверять, устанавливать и перезагружать конфигурацию Вашего сервера.

Apache:

sudo certbot --apache

NGINX:

sudo certbot --nginx

Вас спросят:

  • Какой домен(ы) защищать
  • Нужно ли перенаправлять весь HTTP-трафик на HTTPS
  • Ваш e-mail для напоминаний о продлении срока действия договора

Certbot позаботится о проверке и настройке веб-сервера за кулисами.

Вариант B: Используйте внешнего провайдера ACME (например, Sectigo) с EAB.

Если Ваш провайдер требует привязки внешней учетной записи, используйте этот метод:

sudo certbot --nginx \
--non-interactive \
--agree-tos \
--email [email protected] \
--server https://acme.sectigo.com/v2/DV \
--eab-kid YOUR_EAB_KID \
--eab-hmac-key YOUR_EAB_HMAC_KEY \
--domain example.com \
--domain www.example.com \
--cert-name my-website-cert

Замените --nginx на --apache для настройки Apache.

При регистрации учетной записи ACME Вы получите --eab-kid и --eab-hmac-key от поставщика сертификатов.

Вариант C: Используйте Certbot в ручном режиме

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

Вот как это сделать с помощью метода webroot:

sudo certbot certonly --webroot \
-w /var/www/html \
-d example.com \
-d www.example.com \
--email [email protected] \
--agree-tos \
--non-interactive

  • —certonly указывает Certbot выпустить сертификат, но не устанавливать его
  • -w указывает корневую директорию Вашего сайта (она должна быть общедоступна через порт 80)

После выпуска вручную настройте Ваш веб-сервер с файлами сертификатов, расположенными в:

/etc/letsencrypt/live/yourdomain.com/

Примечание: Этот путь используется независимо от того, какой провайдер ACME Вы выбрали, если только Вы не переопределите каталог хранения с помощью дополнительных флагов (—config-dir, —work-dir).

Не забудьте перезагрузить свой веб-сервер после применения путей к сертификатам в конфигурации.


Шаг 3 — Проверьте, все ли работает

Зайдите на свой домен в браузере. Вы должны увидеть защищенный замок или просто успешную загрузку страницы в Chrome. Чтобы еще раз убедиться в том, что сервер работает:

sudo systemctl status apache2 # Debian/Ubuntu (Apache)
sudo systemctl status httpd # AlmaLinux/Rocky (Apache)
sudo systemctl status nginx # All systems (NGINX)

И проверить сертификат с терминала:

openssl s_client -connect yourdomain.com:443

Найдите в выводе действительные даты и имя CA Вашего провайдера.


Шаг 4 — Настройка автоматического продления

Протокол ACME поддерживает автоматическое обновление сертификатов, и Certbot разработан таким образом, чтобы без проблем справляться с этим через встроенный таймер systemd или задание cron. Однако поведение при обновлении зависит от Вашего поставщика сертификатов:

Бесплатные центры сертификации (например, Let’s Encrypt) выдают сертификаты, действительные в течение 90 дней, и поддерживают частые проверки на продление.

Коммерческие УЦ (например, Sectigo или Digicert) часто выпускают сертификаты сроком на 1 год через ACME, но при этом соблюдают процесс продления ACME. Certbot тоже обрабатывает их автоматически, только реже.

Проверьте, запланировано ли продление

По умолчанию Certbot устанавливает системный таймер или задание cron. Вы можете подтвердить его активность с помощью:

systemctl list-timers | grep certbot

Благодаря этому Certbot регулярно проверяет Ваши сертификаты (обычно два раза в день) и обновляет их только тогда, когда они находятся в пределах окна обновления (обычно за 30 дней до истечения срока действия).


Заключительные слова

Certbot и протокол ACME делают управление SSL простым. В этом руководстве Вы найдете все необходимое для установки сертификата ACME на Apache и NGINX с автоматическим обновлением, четкой проверкой и полным контролем при необходимости.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.