HTTPS давно перестал быть “опцией”. Без него браузер пугает пользователей, платежки и API капризничают, а часть SEO-сигналов просто не засчитывается. При этом большинство сбоев с сертификатами не про криптографию, а про банальные вещи: закрыт порт 80, DNS указывает не туда, nginx слушает не тот server_name, а автопродление никто не проверил. Ниже самый прямой путь: поставить Certbot, выпустить Let’s Encrypt, проверить, что продление реально работает, и не словить простой через 90 дней.
На Ubuntu 24.04 самый спокойный вариант это Snap: он ставит свежий Certbot и обновляет его сам.
sudo apt update
sudo apt install -y snapd
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -sf /snap/bin/certbot /usr/bin/certbot
certbot --version
На Debian 12 тоже можно так же, если не хочется зависеть от версий пакетов в репозиториях.
Ручной способ через пакеты системы
Если предпочитаешь системные репозитории и предсказуемость окружения.
Debian 12 или Ubuntu:
sudo apt update
sudo apt install -y certbot
certbot --version
AlmaLinux 9:
sudo dnf install -y epel-release
sudo dnf install -y certbot
certbot --version
Выпуск сертификата для Nginx и Apache
Если у тебя Nginx и ты хочешь, чтобы Certbot сам поправил конфиг и включил редирект на HTTPS, это самый удобный путь:
sudo certbot --nginx
Для Apache:
sudo certbot --apache
Команда откроет интерактивный режим: спросит email, условия, предложит домены из конфигов и сама сделает нужные правки. Это удобно тем, что тебе не нужно “вписывать домен в команду” и рисковать ошибкой.
Если ты не хочешь автоматических правок, выпускай сертификат в режиме webroot, а конфиг меняй руками:
sudo certbot certonly --webroot
Как проверить, что всё работает
Сразу после выпуска сделай три проверки. Они отсекают 90% проблем.
Проверка сертификата снаружи через curl:
curl -I https://ваш-домен
Проверка, что Certbot видит активные сертификаты:
sudo certbot certificates
Проверка автопродления в “сухом” режиме:
sudo certbot renew --dry-run
Если dry-run проходит, значит через 60–80 дней ты не проснешься с просроченным сертификатом.
Автопродление и перезагрузка веб-сервера
На большинстве систем Certbot уже ставит systemd timer. Проверь:
systemctl list-timers | grep -i certbot || true
Чтобы после продления nginx точно подхватывал новый сертификат, можно добавить deploy-hook:
sudo certbot renew --deploy-hook "systemctl reload nginx"
Для Apache аналогично:
sudo certbot renew --deploy-hook "systemctl reload apache2"
Типовые ошибки и как чинить за минуту
Самая частая причина провала HTTP-01 проверки это недоступен порт 80. Let’s Encrypt должен достучаться до домена по HTTP, даже если ты потом делаешь редирект на HTTPS. Проверь, что 80 открыт в фаерволе и nginx/apache реально слушает его.
Nginx:
sudo ss -lntp | grep -E ':(80|443)\s'
sudo nginx -t
Apache:
sudo ss -lntp | grep -E ':(80|443)\s'
sudo apachectl -t
Если DNS указывает не на тот IP, Certbot будет упорно падать. Быстро проверить можно так:
getent hosts ваш-домен
На AlmaLinux с SELinux иногда мешает доступ к файлам или проксирование. Если у тебя нестандартные пути, не игнорируй контексты и политики. В большинстве типовых установок с nginx/apache и стандартными директориями проблем нет, но если “всё идеально, а проверка не проходит”, SELinux один из первых подозреваемых.
HTTPS кажется мелочью, пока он не ломается в самый неподходящий момент. На HSTQ мы обычно настраиваем выпуск и продление так, чтобы оно не зависело от ручных шагов: проверяем, что 80/443 доступны, веб-сервер корректно отдает нужный vhost, dry-run проходит, а перезагрузка сервиса после продления происходит автоматически. Это особенно полезно, когда у тебя несколько доменов, разные окружения, или серверов становится больше одного.
Оформите услугу на сайте hstq.net, и мы поможем вам выпустить Let’s Encrypt через Certbot, настроить автопродление и проверить всё так, чтобы сертификаты обновлялись сами и без простоев.