Русский (Russian)

Бесплатный SSL Let's Encrypt для Apache на AlmaLinux 9

2 min
VPS/VDS-хостинг

Браузеры и поисковые системы ожидают HTTPS, а Let's Encrypt выдаёт сертификаты бесплатно. На VPS Linux Infrawire с AlmaLinux 9 Certbot может получить сертификат, изменить конфигурацию Apache и сам его продлевать. Те же шаги подходят для Rocky Linux 9.

📋 Требования

  • VPS с AlmaLinux 9 и доступом root или sudo (IP и пароль в личном кабинете).
  • Домен example.com, A-запись (и AAAA для IPv6) которого указывает на VPS_IP. Сначала дождитесь распространения DNS.
  • Apache (httpd), отдающий сайт по HTTP на порту 80.

1. Установка Apache и открытие брандмауэра

Если Apache ещё не установлен, установите и запустите его. Затем откройте HTTP и HTTPS в firewalld; порт 80 нужен для проверки Let's Encrypt.

Bash
dnf install -y httpd systemctl enable --now httpd firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload firewall-cmd --list-services

2. Создание виртуального хоста для домена

Certbot ищет ServerName, совпадающий с вашим доменом, поэтому создайте отдельный виртуальный хост.

Bash
mkdir -p /var/www/example.com/public_html echo "Hello" > /var/www/example.com/public_html/index.html

Создайте /etc/httpd/conf.d/example.com.conf:

Apache
1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5</VirtualHost>

Проверьте синтаксис и перезагрузите конфигурацию:

Bash
apachectl configtest systemctl reload httpd

3. Установка Certbot и mod_ssl

Certbot берётся из репозитория EPEL. mod_ssl даёт модуль TLS для Apache и сертификат по умолчанию, без которого httpd не сможет слушать порт 443.

Bash
dnf install -y epel-release dnf install -y certbot python3-certbot-apache mod_ssl

4. Запрос сертификата

Запустите Certbot с плагином Apache. Он проверит домен по HTTP, создаст новый виртуальный хост *-le-ssl.conf и при желании добавит перенаправление с HTTP на HTTPS.

Bash
certbot --apache -d example.com -d www.example.com

Укажите настоящий адрес e-mail (на него приходят предупреждения об окончании срока), примите условия и выберите перенаправление, когда спросят. Каждое имя, переданное через -d, должно указывать на этот сервер, иначе проверка не пройдёт.

Если SELinux работает в режиме enforcing (по умолчанию), для стандартной установки ничего особого не нужно. Не отключайте его ради обхода ошибки.

5. Проверка автоматического продления

Сертификаты Let's Encrypt действуют 90 дней. В AlmaLinux 9 пакет устанавливает таймер systemd, который срабатывает дважды в день и продлевает только сертификаты, срок которых близок к концу.

Bash
systemctl list-timers | grep certbot systemctl status certbot-renew.timer

Если таймера нет в списке, включите его:

Bash
systemctl enable --now certbot-renew.timer

Сымитируйте продление, не трогая настоящий сертификат:

Bash
certbot renew --dry-run

Последняя строка должна сообщать, что все имитированные продления прошли успешно. После настоящего продления Apache перезагружается автоматически.

Проверка

Bash
certbot certificates curl -I https://example.com curl -I http://example.com

Первая команда показывает домены и дату окончания срока. HTTPS-запрос должен вернуть 200, а HTTP-запрос должен ответить 301 на HTTPS-адрес. В браузере значок замка должен показывать действительный сертификат, выданный Let's Encrypt. Всю цепочку можно посмотреть командой openssl s_client -connect example.com:443 -servername example.com.

Устранение неполадок

  • Проверка не пройдена или истекло время ожидания: DNS ещё не указывает на сервер или порт 80 закрыт. Проверьте dig +short example.com, firewall-cmd --list-services и любой брандмауэр перед VPS.
  • Certbot не находит подходящий виртуальный хост: ServerName или ServerAlias в /etc/httpd/conf.d/ не совпадает с указанным доменом. Исправьте, выполните apachectl configtest и повторите. Можно также использовать certbot certonly --apache и настроить пути самостоятельно.
  • Слишком много сертификатов или неудачных проверок (лимит запросов): Let's Encrypt ограничивает повторные попытки. Сначала проверьте с certbot --apache --dry-run и подождите перед новой попыткой.
  • Сайт недоступен на 443 после установки: HTTPS не открыт в firewalld или httpd не был перезагружен. Выполните firewall-cmd --permanent --add-service=https, firewall-cmd --reload и systemctl restart httpd.

🔐 Ваш сайт на Apache в AlmaLinux 9 теперь работает по HTTPS и сам продлевает сертификат.

Следите за последними предложениями, скидками и специальными акциями.

Смотреть акции

Мы используем файлы cookie

Аналитические cookie улучшают работу сайта. Данные не продаются третьим лицам. Подробнее в политике конфиденциальности.