Полная настройка Let's Encrypt в 2026: бесплатные SSL-сертификаты и автоматическое обновление для Nginx и Apache | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Полная настройка Let's Encrypt в 2026: бесплатные SSL-сертификаты и автоматическое обновление для Nginx и Apache

07 апреля 2026 8 мин. чтения

Это практическое руководство предоставляет 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-01API доступ к 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

После успешной установки и настройки автоматического обновления выполните финальную проверку:

  1. Срок действия сертификата: Убедитесь, что сертификат действителен и срок его действия около 90 дней, а не несколько лет (как у самоподписанных).
  2. Цепочка доверия: Проверьте, что сертификат выпущен Let's Encrypt и браузеры доверяют ему. Сервисы вроде SSL Labs или простой curl -I помогут.
  3. Настройки TLS: Убедитесь, что ваш веб-сервер использует TLS 1.2/1.3 и безопасные шифры. Отключите SSLv3, TLS 1.0 и 1.1.
  4. Редирект HTTP->HTTPS: Проверьте, что все запросы по HTTP перенаправляются на HTTPS, и нет дублирующих конфигураций.

Если вам требуется установка сертификатов вручную для специфичных случаев (например, для Apache в сложной виртуализации), обратитесь к подробному руководству «Полная инструкция по ручной установке SSL/TLS-сертификата на Nginx и Apache (2026)», которое детально разбирает создание и модификацию конфигурационных файлов.

Для сервисов, использующих FTP с шифрованием, также доступно руководство по интеграции Let's Encrypt: «Настройка FTPS сервера с шифрованием данных и Let's Encrypt (vsftpd и FileZilla Server)».

Поделиться:
Сохранить гайд? В закладки браузера