Что такое Let's Encrypt и зачем нужен SSL-сертификат
Let's Encrypt — это некоммерческий центр сертификации, который предоставляет бесплатные SSL/TLS-сертификаты. Его цель — сделать шифрование в интернете доступным каждому. Сертификат подтверждает подлинность сайта и шифрует данные между браузером пользователя и сервером. Без него браузеры помечают сайт как небезопасный, а поисковые системы понижают его в выдаче.
Сертификат Let's Encrypt выдаётся на 90 дней. Такой короткий срок — осознанное решение: он стимулирует автоматизацию продления и снижает риск компрометации ключей. На практике это означает, что вам нужно настроить автоматическое обновление, иначе сайт через три месяца потеряет защиту.
Важно понимать: шифрование в бесплатном сертификате ничем не отличается от платного. Разница лишь в уровне проверки организации и дополнительных гарантиях. Для большинства сайтов, интернет-магазинов и API бесплатного сертификата более чем достаточно.
Условия получения сертификата: что нужно подготовить
Прежде чем запрашивать сертификат, убедитесь, что выполнены три условия:
- Домен указывает на ваш сервер. В DNS должна быть A-запись, связывающая домен с IP-адресом сервера. Проверить можно командой
dig +short вашдомен.ruили через онлайн-сервисы. - Порты 80 и 443 открыты. Порт 80 используется для проверки владения доменом через HTTP. Закрытый порт 80 — причина примерно половины неудачных выпусков. Порт 443 нужен для работы HTTPS.
- Веб-сервер настроен. В конфигурации 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 и убедитесь, что в конфигурации указаны правильные пути.