Настройка безопасного соединения является обязательным шагом при организации доступа к веб-ресурсу. Цель такой настройки – подключение протокола HTTPS вместо менее защищённого HTTP для обеспечения шифрования трафика между сервером и пользователями. В статье разберём, как настроить доступ к сайту через HTTPS в Apache на виртуальном выделенном сервере, работающем под управлением Rocky Linux 9.
Предварительные работы
Настройка доступа к веб-ресурсу через HTTPS заключается в установке на веб-сервер TLS/SSL-сертификата от доверенного удостоверяющего центра, который обеспечит шифрование соединения и подтверждение подлинности сервера. Наиболее доступным и популярным центром сертификации является Let’s Encrypt, выпускающий бесплатные TLS/SSL-сертификаты. Для автоматического получения, установки и продления TLS/SSL-сертификатов компанией Let’s Encrypt разработан бесплатный инструмент – Certbot. Данная утилита позволяет быстро настроить HTTPS на веб-сервере, в том и числе Apache, без ручного вмешательства.
При установке и запуске виртуального хоста на Apache для доступа к веб-странице необходимо обеспечить доступность сервера для протокола HTTP. Это можно сделать, добавив в брандмауэр Firewalld соответствующее разрешающее правило:
$ sudo firewall-cmd --permanent --add-service=http
Протокол HTTP также будет использоваться утилитой Certbot при проверке центром сертификации валидности домена, для которого осуществляется создание сертификата.
Похожим образом необходимо открыть доступ к серверу и для протокола HTTPS. С использованием HTTPS клиенты через браузер будут подключаться к вашему веб-ресурсу.
$ sudo firewall-cmd --permanent --add-service=https
Для применения внесённых в брандмауэр изменений следует перезапустить конфигурацию Firewalld:
$ sudo firewall-cmd --reload
Let’s Encrypt выдаёт TLS/SSL-сертификаты для сайтов, доступ к которым осуществляется через их доменные имена. При этом не получится получить сертификат для веб-ресурса, доступного исключительно по своему IP-адресу. Исходя из этого, необходимо к IP-адресу сервера, на котором установлен Apache, привязать имя домена. Такая настройка производится при помощи A-записи – специальной DNS-записи, отвечающей за направление доменного имени на IP-адрес определённого узла. Сделать такую настройку можно на сайте-регистраторе домена либо во вкладке Домены в личном кабинете RUVDS.

Установка Certbot и запрос TLS-сертификата
Certbot не входит в стандартные репозитории Rocky Linux 9, поэтому при установке утилиты в качестве источника используется репозиторий EPEL. Следующая команда инсталлирует в систему необходимый репозиторий:
$ sudo dnf install epel-release
По окончании установки репозитория выполните инсталляцию непосредственно утилиты Certbot, а также плагина python3-certbot-apache, предназначенного для автоматической настройки Apache:
$ sudo dnf install certbot python3-certbot-apache
Затем запустите Certbot в интерактивном режиме с использованием Apache-плагина:
$ sudo certbot --apache
В процессе работы утилита, во-первых, попросит вас указать адрес электронной почты. Он будет использоваться как часть процедуры регистрации ACME-аккаунта. Затем для продолжения процесса регистрации на сервере ACME необходимо будет согласиться с условиями абонентского соглашения. Далее утилита попросит поделиться своим E-mail с компанией, разрабатывающей Certbot – Electronic Frontier Foundation, некоммерческой организацией и партнёром-основателем проекта Let’s Encrypt. После чего необходимо будет выбрать домен, для которого Certbot запросит TLS-сертификат. Здесь нужно выбрать соответствующее число или несколько чисел, разделённых запятыми или пробелами, либо оставить поле пустым, если вы выбираете все показанные варианты.

В результате утилита автоматически:
- получит TLS-сертификат для выбранных вами доменов;
- внесёт изменения в конфигурацию Apache, в том числе:
- изменит виртуальные хосты;
- добавит HTTPS-конфигурации для выбранных хостов;
- подключит к ним сертификаты и ключи;
- настроит автоматическое перенаправление с HTTP на HTTPS;
- перезапустит веб-сервер Apache для применения изменений.
Запуск автоматического обновления сертификатов
При установке Certbot в системе создаётся таймер certbot-renew.timer. Данный механизм автоматически запускает обновление сертификатов дважды в сутки и продлевает их, когда до истечения срока их действия остаётся меньше 30 дней. Чтобы запустить созданный таймер, выполните команду:
$ sudo systemctl start certbot-renew.timer
После чего проверьте корректность запуска таймера:
$ systemctl status certbot-renew.timer
Вывод команды сообщает о том, что таймер запущен и установлен в автозагрузку.

Также проверьте, работает ли автоматический таймер обновления сертификатов Certbot, через вывод списка активных таймеров systemd с фильтром по certbot:
$ systemctl list-timers | grep certbot
Подобный вывод означает, что автоматическое обновление сертификатов Certbot включено и таймер работает. В начале строки указано следующее запланированное выполнение таймера Certbot и время, оставшееся до запуска таймера. Именно в указанное время Certbot попытается обновить сертификаты.

Затем откройте браузер и перейдите на страницу своего веб-сайта, чтобы убедиться в том, что доступ к нему осуществляется с использованием протокола HTTPS.

О применении HTTPS говорит сообщение вида Подключение защищено в выпадающем меню, которое можно вывести из навигационной строки браузера.
