В настоящем руководстве рассмотрим, как можно обезопасить веб-сервер Apache на сервере с CentOS Stream при помощи центра сертификации Let’s Encrypt.
Let’s Encrypt бесплатно выдаёт SSL/TLS сертификаты клиентам, чьи запросы обрабатывает веб-сервер, что позволяет шифровать клиентский трафик с использованием HTTPS.
Для дальнейшей работы мы будем использовать VPS, работающий под управлением операционной системой CentOS Stream и с установленным Apache в качестве веб-сервера. На Apache должен быть настроен и запущен виртуальный хост, к которому подключён домен (в нашем мануале это – my-domain.host
). Также, на сервере должен быть настроен брандмауэр, на котором открыты порты 80 и 443 для обслуживания запросов через http и https. Команды будем выполнять от имени пользователя, не являющегося root
-ом, но имеющим привилегии sudo
.
Установка Certbot
Настройку Let’s Encrypt будем производить с помощью Certbot. Это – инструмент для организации процесса получения и продления сертификатов.
Для инсталляции Certbot будем использовать snap-пакеты, как предлагает официальная документация. Поэтому, первым шагом необходимо установить snapd
, утилиту для управления snap-пакетами. Дистрибутив snapd
доступен из репозитория EPEL, поэтому сначала необходимо установить его:
$ sudo dnf install epel-release
Затем переходите к инсталляции snapd
:
$ sudo dnf install snapd
После установки необходимо запустить службу snapd
, добавив её в автозагрузку:
$ sudo systemctl enable --now snapd.socket
Для включения поддержки классических snap-пакетов создайте символьную ссылку между /var/lib/snapd/snap/
и /snap/
:
$ sudo ln -s /var/lib/snapd/snap /snap
Далее, перезагрузите сервер для того, чтобы быть уверенным, что сервис обновился корректно.
Следующая команда позволит убедиться, что у вас установлена последняя версия snapd
:
$ sudo snap install core; sudo snap refresh
Следующим шагом установите модуль для Apache, который обеспечивает криптографию веб-сервера через SSL:
$ sudo dnf install mod_ssl
Теперь можно переходить непосредственно к установке Certbot:
$ sudo snap install --classic certbot
После того, как установка завершится, создайте следующий симлинк, обеспечивающий запуск Certbot:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Подключение сертификата
Теперь необходимо запустить Certbot для создания сертификата. Данная инструкция изменит конфигурацию Apache, сгенерирует и установит сертификат, тем самым, сделает возможным доступ к вашему домену по HTTPS. В ходе генерации сертификата нужно будет ввести ваш E-mail и ответить ещё на несколько вопросов. В числе прочего, укажите домен, для которого создаётся сертификат:
$ sudo certbot --apache
Таким образом, после создания и установки сертификата, ваш домен будет доступен по HTTPS:
Certbot будет автоматически обновлять ваши сертификаты до истечения срока их действия с помощью планировщика cron. Для этого вам не нужно запускать Certbot, если только вы не хотите изменить его конфигурацию. Но при этом, вы можете проверить автоматическое обновление ваших сертификатов, запустив следующую команду:
$ sudo certbot renew --dry-run
Заключение
В общем, это всё, что нужно знать о том, как обезопасить Apache с Let’s Encrypt на CentOS Stream. С помощью данного руководства мы установили клиента для Let’s Encrypt – Certbot, создали и подключили SSL-сертификат к домену, а также, проверили возможность обновления используемого сертификата.