Это практическое руководство предоставляет DevOps инженерам и системным администраторам проверенные пошаговые инструкции для быстрого получения, установки и поддержки бесплатных SSL-сертификатов Let's Encrypt с помощью клиента Certbot. Вы получите готовые команды для Ubuntu и Debian, научитесь выбирать метод верификации (HTTP-01 или DNS-01) для сложных инфраструктур с балансировщиками нагрузки и reverse-proxy, настроите надежное автоматическое обновление через systemd таймеры и сможете диагностировать типичные проблемы, включая сбои с DNS-провайдерами, как в реальных случаях февраля 2026 года.
Базовый сценарий: быстрое получение и установка SSL для одного сервера
Если ваш веб-сервер (Nginx или Apache) расположен на одном физическом или виртуальном сервере и имеет прямой доступ из интернета по порту 80 (HTTP), этот сценарий — самый простой и быстрый путь к HTTPS. Let's Encrypt выдаёт сертификаты сроком действия 90 дней, что исключает риск использования небезопасных самоподписанных сертификатов с десятилетним сроком, которые браузеры не доверяют.
Установка Certbot и получение первого сертификата на Ubuntu/Debian
Для начала убедитесь, что ваш домен (например, example.com) корректно резолвится на IP-адрес вашего сервера. Затем выполните следующие команды на сервере с Ubuntu 22.04/24.04 или Debian 11/12:
# Добавление репозитория Snap (обычно уже установлен в современных версиях)
sudo apt update
sudo apt install snapd
# Установка Certbot через Snap (рекомендуемый способ)
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# Для Nginx: автоматическая установка и конфигурация
sudo certbot --nginx -d example.com -d www.example.com
# Для Apache: автоматическая установка и конфигурация
sudo certbot --apache -d example.com -d www.example.com
Команда с флагом --nginx или --apache запускает процесс, в котором Certbot:
- Временно запускает веб-сервер на порту 80 для прохождения проверки HTTP-01 (Let's Encrypt проверяет, что вы контролируете домен, путем размещения специального файла на вашем сервере).
- Получает сертификат и помещает его в стандартный путь
/etc/letsencrypt/live/example.com/. - Автоматически модифицирует конфигурационные файлы вашего веб-сервера, добавляя директивы SSL и создавая редирект с HTTP на HTTPS.
После успешного выполнения вы увидите сообщение о том, что сертификат получен и установлен.
Автоматическая конфигурация веб-сервера и проверка результата
Certbot создает новые или изменяет существующие конфигурационные блоки. Для Nginx это выглядит так:
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# ... остальная конфигурация
}
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
Для проверки корректности установки выполните:
# Проверка содержимого сертификата
sudo openssl x509 -in /etc/letsencrypt/live/example.com/cert.pem -text -noout | grep -A2 -B2 "Validity"
# Проверка, что веб-сервер использует сертификат
curl -I https://example.com
Вы должны увидеть срок действия сертификата (примерно 90 дней) и успешный ответ от сервера по HTTPS. Для базового усиления безопасности сразу после установки рекомендуется настроить использование только современных протоколов TLS (1.2 и 1.3) и безопасных шифров. Подробные инструкции по этому шагу вы найдете в статье «Nginx HTTPS в 2026 году: TLS 1.3, Let's Encrypt и безопасная конфигурация», которая содержит готовые, проверенные конфигурации.
Выбор метода верификации: HTTP-01 или DNS-01 для сложных инфраструктур
Метод HTTP-01 прост, но требует прямого доступа к серверу по порту 80. В сложных архитектурах это может быть невозможно или неудобно. Метод DNS-01 использует добавление временной TXT-записи в DNS для подтверждения владения доменом и не требует открытого порта на сервере.
| Метод | Требования | Лучшие сценарии применения | Ограничения |
|---|---|---|---|
| HTTP-01 | Порт 80 открыт для Let's Encrypt, сервер доступен из интернета. | Один веб-сервер, простые сайты. | Не работает для wildcard сертификатов, серверов за балансировщиком без прямого доступа. |
| DNS-01 | API доступ к DNS провайдеру (токен), возможность автоматически добавлять TXT-записи. | Wildcard сертификаты (*.example.com), несколько серверов за балансировщиком, сервисы внутри сети (через reverse-proxy), когда порт 80 закрыт. | Требует интеграции с API DNS провайдера, более сложная первоначальная настройка. |
Когда использовать DNS-01: wildcard сертификаты и сервисы без прямого доступа
Wildcard сертификат позволяет защитить все поддомены одного домена (например, api.example.com, app.example.com, test.example.com) одним сертификатом. Это идеально для микросервисных архитектур или разработки. Для его получения метод HTTP-01 неприменим — требуется DNS-01. Также DNS-01 необходим, если ваш сервер находится за балансировщиком нагрузки (например, AWS ALB, NGINX Plus как балансировщик), который сам не может пройти проверку HTTP-01, или если порт 80 заблокирован по политике безопасности.
Настройка DNS-01 с Cloudflare: работа с API токеном
Cloudflare — один из самых популярных DNS-провайдеров. Для автоматизации с Certbot необходимо создать API токен с ограниченными правами.
1. В панели Cloudflare создайте API Token:
- Перейдите в «My Profile» -> «API Tokens» -> «Create Token».
- Выберите шаблон «Edit zone DNS».
- В «Zone Resources» выберите конкретный домен или «All zones».
- Сохраните токен. Он будет выглядеть как длинная строка символов.
2. На сервере создайте файл конфигурации для плагина Certbot:
sudo mkdir -p /etc/letsencrypt/
echo "dns_cloudflare_api_token = YOUR_API_TOKEN_HERE" > /etc/letsencrypt/cloudflare.ini
sudo chmod 600 /etc/letsencrypt/cloudflare.ini
3. Установите плагин для Cloudflare и получите wildcard сертификат:
sudo snap install certbot-dns-cloudflare
sudo certbot certonly --dns-cloudflare --dns-cloudflare-config /etc/letsencrypt/cloudflare.ini -d "*.example.com" -d example.com
После успешного выполнения, как сообщалось в реальных случаях, сертификат для *.example.com будет размещен в /etc/letsencrypt/live/example.com/. Затем вам нужно самостоятельно настроить его использование в вашем веб-сервере или reverse-proxy. Для комплексной настройки Nginx в таких сценариях обратитесь к руководству «Полное руководство по SSL/TLS и HTTPS в Nginx: от сертификатов до HSTS и reverse proxy», где разбираются конфигурации с proxy_pass и SSL.
Настройка автоматического обновления сертификатов: cron и systemd таймеры
Сертификаты Let's Encrypt действительны 90 дней. Автоматическое обновление — критически важная задача для бесперебойной работы HTTPS. Certbot включает команду certbot renew, которая проверяет все установленные сертификаты и обновляет те, срок действия которых меньше 30 дней.
Systemd таймер: рекомендуемый метод для современных систем
Systemd таймеры более надежны и интегрированы в систему, чем cron. Создайте два файла:
/etc/systemd/system/certbot.service:
[Unit]
Description=Certbot Renewal
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"
# Для Apache используйте: ExecStart=/usr/bin/certbot renew --quiet --post-hook "systemctl reload apache2"
/etc/systemd/system/certbot.timer:
[Unit]
Description=Timer for Certbot Renewal
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
Затем активируйте таймер:
sudo systemctl daemon-reload
sudo systemctl enable --now certbot.timer
sudo systemctl status certbot.timer
Таймер будет запускать службу ежедневно в 3:00. Если сертификаты требуют обновления, Certbot выполнит его и запустит post-hook команду для перезагрузки веб-сервера без прерывания работы.
Обработка ошибок и перезагрузка службы после успешного обновления
Ключевой элемент — параметр --post-hook. Он гарантирует, что веб-сервер перезагрузит конфигурацию и начнет использовать новые сертификаты сразу после их получения. Для мониторинга проверяйте логи:
sudo journalctl -u certbot.service
# или
sudo tail -f /var/log/letsencrypt/letsencrypt.log
Перед внедрением автоматизации обязательно протестируйте процесс обновления:
sudo certbot renew --dry-run
Эта команда имитирует процесс обновления без реального изменения сертификатов. Если --dry-run проходит успешно, ваша конфигурация корректна.
Диагностика и решение типичных проблем при обновлении и выдаче
Даже после корректной настройки могут возникнуть проблемы, особенно связанные с сетью и DNS.
Проблемы с DNS-провайдерами (Cloudflare): блокировка ACME-клиента
В феврале 2026 года пользователи столкнулись с проблемой, когда автоматическое обновление сертификатов Let's Encrypt через Cloudflare DNS внезапно прекращало работать. В логах ACME-клиента появлялись ошибки соединения с cloudflare-dns.com. Причина: системы безопасности (например, DNSBL Safesearch или фильтрация DNS over HTTPS/TLS) блокировали запросы от Certbot к Cloudflare для проверки DNS-01.
Решение: Если в вашей инфраструктуре используются подобные фильтры DNS-трафика, необходимо исключить домен cloudflare-dns.com из списков блокировки. Проверить доступность можно командой:
dig @1.1.1.1 cloudflare-dns.com
# или
curl -v https://cloudflare-dns.com/dns-query
Если запросы блокируются, вам потребуется настроить исключение в соответствующем сервисе (например, в конфигурации DNSBL на вашем firewall или DNS-сервере).
Анализ логов Certbot и проверка доступности сервисов Let's Encrypt
Основной источник информации — файлы логов в /var/log/letsencrypt/. Типичные ошибки и их решения:
- «Connection refused» или таймауты: Проверьте, что ваш сервер может соединиться с ACME-серверами Let's Encrypt (
acme-v02.api.letsencrypt.org) по порту 80 (для HTTP-01) или 443. Используйтеcurlилиtelnet. - Ошибки верификации домена: Убедитесь, что DNS-записи вашего домена корректно резолвится на IP вашего сервера (для HTTP-01) или что API токен DNS-провайдера имеет необходимые права и активен (для DNS-01).
- Ошибки прав доступа: Certbot требует права на чтение/запись в директории
/etc/letsencrypt/и конфигурационных файлах веб-сервера. Проверьте владельца и права с помощьюls -la.
Для глубокого анализа безопасности всей конфигурации веб-сервера после решения проблем с Certbot используйте руководство «Защита Nginx в 2026: практическое руководство по настройке безопасности веб-сервера», которое охватывает не только TLS, но и WAF, rate limiting.
Проверка безопасности и итоговой конфигурации HTTPS
После успешной установки и настройки автоматического обновления выполните финальную проверку:
- Срок действия сертификата: Убедитесь, что сертификат действителен и срок его действия около 90 дней, а не несколько лет (как у самоподписанных).
- Цепочка доверия: Проверьте, что сертификат выпущен Let's Encrypt и браузеры доверяют ему. Сервисы вроде SSL Labs или простой
curl -Iпомогут. - Настройки TLS: Убедитесь, что ваш веб-сервер использует TLS 1.2/1.3 и безопасные шифры. Отключите SSLv3, TLS 1.0 и 1.1.
- Редирект HTTP->HTTPS: Проверьте, что все запросы по HTTP перенаправляются на HTTPS, и нет дублирующих конфигураций.
Если вам требуется установка сертификатов вручную для специфичных случаев (например, для Apache в сложной виртуализации), обратитесь к подробному руководству «Полная инструкция по ручной установке SSL/TLS-сертификата на Nginx и Apache (2026)», которое детально разбирает создание и модификацию конфигурационных файлов.
Для сервисов, использующих FTP с шифрованием, также доступно руководство по интеграции Let's Encrypt: «Настройка FTPS сервера с шифрованием данных и Let's Encrypt (vsftpd и FileZilla Server)».