Бесплатный SSL с Let's Encrypt (certbot)
Let's Encrypt выдаёт доверенные TLS-сертификаты бесплатно, а клиент certbot делает всё остальное: подтверждает владение доменом, получает сертификат, включает HTTPS в nginx или Apache и настраивает автопродление. Из этой статьи вы получите рабочий HTTPS за несколько минут — и больше не будете вспоминать об истечении сертификата.
Что понадобится
- Домен, у которого A-запись уже указывает на публичный IP этого VPS (AAAA не нужна — VPS ForestsNet Cloud работают только по IPv4) — Let's Encrypt проверяет владение доменом по HTTP, поэтому DNS должен быть настроен заранее.
- Установленный и настроенный nginx или Apache, которые уже отдают сайт по обычному HTTP (порт 80) с нужным доменом в
server_name(nginx) илиServerName(Apache). Если веб-сервера ещё нет — можно поставить его через готовый рецепт LEMP/LAMP (см. статью «Готовые рецепты VMmanager 6») или вручную — см. статьи nginx и Apache. - Доступ по SSH под root или пользователем с sudo.
- Открытые порты 80 (по нему Let's Encrypt проверяет домен) и 443 (по нему будет работать HTTPS).
⚠️ Важно: откройте порты 80 и 443 в файрволе — иначе Let's Encrypt не сможет подтвердить домен, а браузеры не достучатся до HTTPS. На Ubuntu/Debian с ufw — см. статью «UFW-фаервол»; на AlmaLinux/Rocky с firewalld: sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload.
ℹ️ Совет: проверить, что домен уже смотрит на этот сервер, можно командой dig +short example.com — она должна вернуть тот же IP-адрес, что указан в карточке сервера в VMmanager 6.
Шаг 1. Установите certbot
Официальная документация certbot рекомендует ставить его через snap — одинаково для всех дистрибутивов, с уже встроенными плагинами для nginx и Apache (отдельно их ставить не нужно). Версии certbot из репозиториев apt/dnf на LTS-дистрибутивах часто заметно устаревают, поэтому именно snap-пакет — актуальная рекомендация разработчиков certbot.
Ubuntu 22.04/24.04 и Debian 11/12
sudo apt update
sudo apt install snapdℹ️ Совет: на Ubuntu snapd обычно уже установлен по умолчанию — команда выше просто убедится, что он свежий. На Debian после установки может понадобиться переподключиться по SSH, чтобы подхватился обновлённый PATH.
AlmaLinux / Rocky Linux 8/9
sudo dnf install epel-release
sudo dnf upgrade
sudo dnf install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snapПосле этого переподключитесь по SSH — иначе пути snap не подхватятся.
Дальше — одинаково для всех систем. Если certbot уже стоял из системного пакетного менеджера, сначала удалите его, чтобы не конфликтовал со snap-версией:
- Ubuntu/Debian:
sudo apt-get remove certbot - AlmaLinux/Rocky:
sudo dnf remove certbot
Установите сам certbot и подготовьте команду:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbotПроверьте, что всё встало:
certbot --versionШаг 2. Получите сертификат
Certbot сам находит домены в конфигурации nginx/Apache (server_name / ServerName), получает сертификат, вносит нужные правки в конфиг и включает редирект с HTTP на HTTPS — всё одной командой. Домены можно не перечислять явно: certbot покажет список найденных и предложит выбрать нужные.
Если у вас nginx
sudo certbot --nginx -d example.com -d www.example.comПри первом запуске certbot спросит e-mail (для важных уведомлений о сертификате) и попросит принять условия использования Let's Encrypt. Это можно указать сразу и пройти без вопросов:
sudo certbot --nginx -d example.com -d www.example.com -m [email protected] --agree-tos -nℹ️ Совет: чтобы отредактировать конфиг nginx самостоятельно, получите только сертификат — без автоматической правки конфигурации: sudo certbot certonly --nginx -d example.com -d www.example.com.
Если у вас Apache
На Ubuntu/Debian модуль SSL для Apache уже есть в комплекте — его достаточно включить и перезапустить Apache:
sudo a2enmod ssl
sudo systemctl restart apache2На AlmaLinux/Rocky модуль mod_ssl нужно доустановить отдельным пакетом:
sudo dnf install mod_ssl
sudo systemctl restart httpdДальше — тот же принцип, что и для nginx:
sudo certbot --apache -d example.com -d www.example.comℹ️ Совет: вариант только с получением сертификата, без автоправки конфигурации Apache — sudo certbot certonly --apache -d example.com -d www.example.com.
Сертификат и приватный ключ certbot сохраняет в /etc/letsencrypt/live/example.com/ (fullchain.pem и privkey.pem) — эти пути пригодятся, если настраиваете HTTPS вручную (режим certonly).
✅ Готово: откройте https://example.com в браузере — должен появиться замок и не быть предупреждений о сертификате.
Шаг 3. Настройте автопродление (systemd-таймер)
Сертификаты Let's Encrypt действуют всего 90 дней, поэтому их нужно регулярно продлевать. Настраивать ничего дополнительно не нужно: snap-пакет certbot сам ставит systemd-таймер, который дважды в день проверяет все сертификаты и продлевает те, что скоро истекают.
Убедитесь, что таймер есть и активен:
systemctl list-timers | grep certbotВ выводе должна быть строка с snap.certbot.renew.timer и временем следующего запуска. Подробности о самом таймере:
systemctl status snap.certbot.renew.timerℹ️ Совет: параметры, с которыми выпущен каждый сертификат (домены, плагин, e-mail), certbot хранит в /etc/letsencrypt/renewal/example.com.conf — именно этот файл таймер использует при продлении, руками туда лезть обычно не нужно.
Шаг 4. Проверьте продление: certbot renew --dry-run
Не дожидаясь реального истечения сертификата, можно проверить, что продление сработает: certbot смоделирует его на тестовом (staging) сервере Let's Encrypt, не трогая настоящий сертификат.
sudo certbot renew --dry-runПри успехе в конце вывода будет сообщение вроде «Congratulations, all simulated renewals succeeded». Если вместо этого ошибка — чаще всего дело в закрытом порту 80 или домене, который больше не указывает на этот сервер.
ℹ️ Совет: проверяйте так сразу после выпуска сертификата и после любых изменений в конфигурации веб-сервера или файрвола — чтобы не столкнуться с проблемой продления уже после того, как старый сертификат истёк.
Что дальше
HTTPS настроен и будет продлеваться сам. Дальше имеет смысл донастроить сам веб-сервер — см. статьи nginx и Apache, а также проверить, что в файрволе открыто ровно то, что нужно, — статья «UFW-фаервол».