Let's Encrypt SSL сертификат: полное руководство по получению, настройке и автопродлению

Узнайте, как бесплатно получить SSL-сертификат Let's Encrypt для сайта. Пошаговые инструкции для Linux и Windows, настройка автопродления, проверка и частые ошибки.

Что такое Let's Encrypt и зачем нужен SSL-сертификат

Let's Encrypt — это некоммерческий центр сертификации, который предоставляет бесплатные SSL/TLS-сертификаты. Его цель — сделать шифрование в интернете доступным каждому. Сертификат подтверждает подлинность сайта и шифрует данные между браузером пользователя и сервером. Без него браузеры помечают сайт как небезопасный, а поисковые системы понижают его в выдаче.

Сертификат Let's Encrypt выдаётся на 90 дней. Такой короткий срок — осознанное решение: он стимулирует автоматизацию продления и снижает риск компрометации ключей. На практике это означает, что вам нужно настроить автоматическое обновление, иначе сайт через три месяца потеряет защиту.

Важно понимать: шифрование в бесплатном сертификате ничем не отличается от платного. Разница лишь в уровне проверки организации и дополнительных гарантиях. Для большинства сайтов, интернет-магазинов и API бесплатного сертификата более чем достаточно.

Условия получения сертификата: что нужно подготовить

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

  1. Домен указывает на ваш сервер. В DNS должна быть A-запись, связывающая домен с IP-адресом сервера. Проверить можно командой dig +short вашдомен.ru или через онлайн-сервисы.
  2. Порты 80 и 443 открыты. Порт 80 используется для проверки владения доменом через HTTP. Закрытый порт 80 — причина примерно половины неудачных выпусков. Порт 443 нужен для работы HTTPS.
  3. Веб-сервер настроен. В конфигурации nginx или Apache должен быть указан server_name с вашим доменом. Для Apache также потребуется включить модуль mod_ssl.

Если вы используете Windows, потребуется либо установить подсистему WSL, либо использовать сторонние клиенты, например, win-acme. В Linux процесс проще, так как официальный клиент Certbot поддерживается из коробки.

Способы проверки владения доменом

Let's Encrypt должен убедиться, что вы действительно владеете доменом. Существует два основных метода проверки:

HTTP-проверка (webroot). Центр сертификации отправляет запрос на http://вашдомен/.well-known/acme-challenge/путь и ожидает определённый ответ. Для этого нужно, чтобы веб-сервер отдавал файлы из каталога .well-known. В nginx достаточно добавить в конфигурацию:

location ~ /.well-known {
    root /var/www/html;
    allow all;
}

В Apache создаётся алиас:

Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/

DNS-проверка. Вы создаёте TXT-запись _acme-challenge.вашдомен с определённым значением. Этот метод удобен для wildcard-сертификатов, но требует ручного обновления записи при каждом продлении, если не настроена автоматизация через API DNS-провайдера.

Для доменов третьего уровня и выше проверка должна пройти на всех уровнях. Например, для layer3.layer2.com нужно, чтобы и layer2.com отвечал на запросы.

Установка Certbot на Linux

Certbot — официальный клиент Let's Encrypt. Установка зависит от дистрибутива:

  • Ubuntu/Debian: sudo apt install certbot python3-certbot-nginx (или python3-certbot-apache для Apache).
  • CentOS/Rocky Linux: sudo dnf install epel-release && sudo dnf install certbot python3-certbot-nginx.
  • Astra Linux: официального репозитория нет, но можно скачать deb-пакеты для Debian 10 и установить их с разрешением зависимостей через apt install -f.
  • Универсальный способ через pip: python3 -m pip install certbot (предварительно установив python3-pip).

После установки проверьте версию: certbot --version. Если команда не найдена, возможно, потребуется создать симлинк, например: sudo ln -s /snap/bin/certbot /usr/bin/certbot (при установке через snap).

Получение сертификата: пошаговые инструкции

Для nginx (автоматическая настройка):

sudo certbot --nginx -d вашдомен.ru -d www.вашдомен.ru

Программа спросит email — укажите рабочий адрес, на него придут уведомления об истечении срока. Затем Certbot сам пропишет сертификат в конфигурацию nginx и предложит настроить переадресацию с HTTP на HTTPS. Соглашайтесь.

Для Apache:

sudo certbot --apache -d вашдомен.ru -d www.вашдомен.ru

Ручной режим с webroot:

sudo certbot certonly --webroot --agree-tos --email admin@вашдомен.ru --webroot-path /var/www/html -d вашдомен.ru -d www.вашдомен.ru

Сертификаты будут сохранены в /etc/letsencrypt/live/вашдомен/. В этой папке находятся:

  • cert.pem — сертификат сервера;
  • privkey.pem — приватный ключ;
  • chain.pem — цепочка сертификатов;
  • fullchain.pem — объединённые cert.pem и chain.pem.

Для nginx в конфигурации указывайте ssl_certificate /etc/letsencrypt/live/вашдомен/fullchain.pem; и ssl_certificate_key /etc/letsencrypt/live/вашдомен/privkey.pem;.

Получение сертификата на Windows

Официального клиента Certbot для Windows нет, но есть несколько рабочих вариантов.

Через WSL (подсистема Linux): Установите WSL командой wsl --install в PowerShell от администратора, затем внутри Linux-окружения выполните инструкции для Ubuntu. Это самый надёжный способ.

Через win-acme: Скачайте утилиту с GitHub, распакуйте архив. Запустите командную строку от администратора и перейдите в папку с утилитой. Для получения сертификата в формате PEM выполните:

wacs.exe --store pemfiles --pemfilespath C:\Certificates

Утилита предложит выбрать сайт IIS и автоматически выпустит сертификат. Для ручного управления можно использовать wacs.exe без параметров — появится интерактивное меню.

Конвертация в PFX для IIS: Если вы получили PEM-файлы, их нужно объединить в PFX. Используйте OpenSSL:

openssl pkcs12 -inkey privkey.pem -in fullchain.pem -export -out mydomain.pfx

Затем импортируйте PFX в хранилище сертификатов Windows и привяжите к сайту в IIS.

Автоматическое продление: как настроить и проверить

Сертификат действует 90 дней, поэтому автопродление критически важно. Certbot при установке создаёт systemd-таймер, который запускает проверку дважды в день. Убедиться, что таймер активен, можно командой:

systemctl list-timers | grep certbot

Для проверки работоспособности продления выполните тестовый прогон:

sudo certbot renew --dry-run

Если команда завершилась со словами Congratulations, значит, реальное продление пройдёт успешно. Если нет — в выводе будет указана причина ошибки.

Просмотреть все сертификаты и их сроки действия:

sudo certbot certificates

Логи попыток продления находятся в /var/log/letsencrypt/letsencrypt.log. При возникновении проблем смотрите последние 50 строк: sudo tail -50 /var/log/letsencrypt/letsencrypt.log.

Wildcard-сертификаты: когда нужны и как получить

Wildcard-сертификат покрывает все поддомены одного уровня, например, *.вашдомен.ru. Он удобен, если у вас много поддоменов (shop, api, blog) и они появляются динамически.

Получить такой сертификат можно только через DNS-проверку:

sudo certbot certonly --manual --preferred-challenges dns -d вашдомен.ru -d "*.вашдомен.ru"

Программа выдаст значение TXT-записи, которую нужно добавить в DNS. После подтверждения сертификат будет выпущен.

Важный минус: в ручном режиме продление придётся выполнять вручную каждые 90 дней. Автоматизация возможна только через API вашего DNS-провайдера, если для него есть плагин Certbot. Например, для Cloudflare есть certbot-dns-cloudflare.

Проверка установки и типичные ошибки

После установки сертификата проверьте его действие:

curl -I https://вашдомен.ru

Или посмотрите даты начала и окончания:

echo | openssl s_client -connect вашдомен.ru:443 -servername вашдомен.ru 2>/dev/null | openssl x509 -noout -dates

В браузере наличие замка в адресной строке также подтверждает корректную установку.

Частые ошибки:

  • Порт 80 закрыт. Проверка не проходит, в логах — Connection refused. Откройте порт в файрволе.
  • Домен не указывает на сервер. Проверьте A-запись.
  • Не перечислены все имена. Если выпустили сертификат только на вашдомен.ru, при заходе на www.вашдомен.ru браузер покажет предупреждение. Всегда добавляйте все нужные домены через -d.
  • Ручное редактирование конфига nginx. Если вы вручную меняли конфигурацию, Certbot может не найти свою секцию. Используйте certbot --nginx для автоматической настройки или аккуратно добавляйте сертификаты вручную.
  • Домен переехал на другой сервер. Проверка будет проходить с нового IP, и если он не совпадает с ожидаемым, продление упадёт.

Бесплатный или платный сертификат: что выбрать

Let's Encrypt закрывает потребности 95% сайтов. Шифрование идентично платным сертификатам, поэтому для интернет-магазинов, блогов, корпоративных сайтов и API бесплатного варианта достаточно.

Платный сертификат имеет смысл, если:

  • Требуется расширенная проверка организации (OV или EV) — в адресной строке отображается название компании.
  • Нужна страховка от центра сертификации на случай ошибок.
  • Заказчик или регулятор требует именно платный сертификат.

Однако с 15 марта 2026 года максимальный срок действия любого сертификата ограничен 199 днями, так что платный не даст преимущества по сроку. В остальных случаях переплачивать не за что.

Вопросы и ответы

Сколько действует сертификат Let's Encrypt?

Сертификат выдаётся на 90 дней. Рекомендуется обновлять его каждые 60 дней, чтобы избежать риска простоя. Автоматическое продление настраивается через Certbot, который проверяет срок действия и обновляет сертификат заранее.

Можно ли получить сертификат Let's Encrypt для Windows без WSL?

Да, можно использовать сторонние клиенты, например, win-acme. Он поддерживает автоматическое получение и установку сертификатов в IIS, а также сохранение в формате PEM. Для ручного управления можно использовать OpenSSL для конвертации в PFX.

Что делать, если автопродление не работает?

Сначала проверьте таймер: systemctl list-timers | grep certbot. Затем выполните тестовый прогон: sudo certbot renew --dry-run. Если он завершается ошибкой, изучите лог /var/log/letsencrypt/letsencrypt.log. Частые причины: закрыт порт 80, домен переехал на другой сервер, или конфигурация nginx изменена вручную.

Нужен ли платный SSL-сертификат, если есть бесплатный Let's Encrypt?

Для большинства сайтов бесплатного сертификата достаточно. Платный нужен только при требованиях к расширенной проверке организации (OV/EV), страховке или по требованию заказчика. С 2026 года максимальный срок действия всех сертификатов ограничен 199 днями, так что платный не даст преимущества по сроку.

Как получить wildcard-сертификат для всех поддоменов?

Wildcard-сертификат выпускается только через DNS-проверку. Используйте команду sudo certbot certonly --manual --preferred-challenges dns -d вашдомен.ru -d "*.вашдомен.ru". Программа выдаст TXT-запись, которую нужно добавить в DNS. Продление в ручном режиме придётся делать вручную, если не настроить автоматизацию через API DNS-провайдера.

Почему браузер показывает предупреждение о небезопасном соединении, если сертификат установлен?

Возможные причины: сертификат выпущен только на один домен, а вы заходите на другой (например, без www); сертификат истёк; цепочка сертификатов неполная (не указан fullchain.pem); или на сервере стоит самоподписанный сертификат. Проверьте даты через openssl s_client и убедитесь, что в конфигурации указаны правильные пути.