WEB-студия U11 | Блог эксперта по веб-разработке Сергея Майорова

🔒 Как выпустить и установить бесплатный SSL-сертификат Let's Encrypt вручную на виртуальном (shared) хостинге без SSH и root-доступа

Как выпустить и установить бесплатный SSL-сертификат Lets Encrypt вручную на виртуальном shared хостинге без SSH и root-доступа
Ко мне периодически приходит одна и та же задача: клиент арендует виртуальный (shared) хостинг — часто это nic.ru, timeweb, beget и подобные — и такой хостинг не умеет сам, автоматически, выпускать и продлевать SSL-сертификаты. При этом SSH-доступа и root-прав у меня как у веб-разработчика на таком хостинге тоже нет, а значит, стандартные инструкции вида «зайдите на сервер и выполните certbot --nginx» не подходят в принципе.
Расскажу пошагово рабочую схему, которая закрывает эту задачу полностью бесплатно: получаем сертификат Let's Encrypt через Certbot локально на своём Windows-компьютере, в ручном режиме подтверждения, и устанавливаем его через панель хостинга.
Статья написана и как инструкция для коллег-веб-дизайнеров, и как памятка для себя — сертификат придётся продлевать каждые 90 дней, и когда наступит этот момент, проще открыть этот текст, чем вспоминать всё заново.

📑 Содержание

🤔 Когда нужен именно этот способ

Этот путь актуален, если у вас одновременно:
  • виртуальный (shared) хостинг без встроенной автоматической выдачи SSL;
  • нет SSH-доступа или root-прав к серверу;
  • в панели хостинга есть форма ручной установки готового сертификата (обычно три поля: «Сертификат», «Промежуточный сертификат», «Приватный ключ»).
Если хостинг предлагает бесплатный SSL «из коробки» одной кнопкой — воспользуйтесь этим, вся дальнейшая инструкция не нужна. Проверить это стоит в первую очередь: у некоторых регистраторов вроде nic.ru периодически идут акции с бесплатным сертификатом на первый год.

⚠️ Важный нюанс 2026 года: не все площадки для получения сертификата подойдут

Обычно самый простой бесплатный способ получить Let's Encrypt-сертификат без своего сервера — это веб-сервисы вроде ZeroSSL, которые сами обращаются к Let's Encrypt по протоколу ACME. Но с середины 2026 года ZeroSSL и ряд других западных удостоверяющих центров (GlobalSign, Sectigo, DigiCert) приостановили выдачу сертификатов для доменов зоны .RU и .SU в рамках соблюдения санкционных ограничений.
Сам Let's Encrypt (это отдельный некоммерческий центр сертификации, ZeroSSL — лишь один из фронтендов к нему) продолжает выдавать сертификаты некоммерческим и коммерческим структурам в России. Поэтому надёжнее обращаться к Let's Encrypt напрямую — через клиент Certbot, а не через веб-интерфейс ZeroSSL.

🧰 Что понадобится

  • Windows-компьютер с доступом в интернет;
  • доступ к панели управления хостингом с Файловым менеджером (или FTP);
  • доступ к панели, где устанавливается готовый сертификат (три поля: сертификат / промежуточный сертификат / приватный ключ);
  • домен, у которого уже настроены DNS-записи на IP этого хостинга, и порт 80 (обычный http) открыт и отвечает.

🐍 Шаг 1. Установка Python

Certbot написан на Python, и на Windows самый надёжный способ его поставить — через pip (менеджер пакетов Python).
1. Зайдите на python.org/downloads.
2. Если сайт предлагает только «Python install manager» через Microsoft Store — используйте ссылку чуть ниже кнопки: «Or get the standalone installer for Python [версия]». Это классический .exe-установщик, с ним меньше путаницы.
Кликните для скачивания «Or get the standalone installer for Python [версия]»
Кликните для скачивания «Or get the standalone installer for Python [версия]»
3. Запустите скачанный файл.
4. Критически важный момент: на первом экране установки внизу окна обязательно поставьте галочку «Add python.exe to PATH» (в новых версиях — «Add Python to environment variables»). Без неё команды не будут находиться из терминала.
5. Нажмите Install Now, дождитесь завершения.

⚙️ Шаг 2. Установка Certbot через pip

Официальный установщик .exe для Windows в релизах Certbot на GitHub нестабилен — иногда файла попросту нет в списке. Надёжнее ставить через Python:
1. Откройте PowerShell от имени администратора: правой кнопкой на «Пуск» → «Терминал (администратор)» / «Windows PowerShell (администратор)» → подтвердите запрос UAC.
2. Выполните команду:
python -m pip install certbot
Вид консоли PowerShell. Запуск от имени администратора
Вид консоли PowerShell. Запуск от имени администратора
3. Дождитесь установки (минута-две, скачается сам Certbot и зависимости — acme, cryptography, pyopenssl и т.д.).
4. Проверьте, что всё встало:
certbot --version
Должно показать версию, например certbot 5.6.0. Если пишет, что команда не найдена — попробуйте python -m certbot --version, либо переустановите Python, аккуратно поставив галочку «Add to PATH».

🚀 Шаг 3. Запуск выпуска сертификата в ручном режиме

Важно: окно PowerShell для этой команды обязательно должно быть открыто от имени администратора — иначе Certbot выдаст ошибку Certbot must be run on a shell with administrative rights.
Выполните команду, подставив свой домен (можно сразу указать домен с www и без, если сайт открывается по обоим адресам):
certbot certonly --authenticator manual --preferred-challenges http -d example.ru -d www.example.ru
Дальше Certbot задаст несколько вопросов:
  1. Email — любой рабочий адрес, на него будут приходить уведомления об истечении сертификата.
  2. Согласие с условиями обслуживания — вводите Y.
  3. Подписка на новости EFF — необязательно, можно N.

📄 Шаг 4. Подтверждение владения доменом через файл

После вопросов Certbot покажет что-то вроде:
Create a file containing just this data:

XXXXXXXXXXXXXXXXXXXXXXXXXX.YYYYYYYYYYYYYYYYYYYYYYYYYY

And make it available on your web server at this URL:

http://example.ru/.well-known/acme-challenge/XXXXXXXXXXXXXXXXXXXXXXXXXX

Press Enter to Continue
Не нажимайте Enter сразу. Сначала нужно создать этот файл на хостинге:
  1. Откройте Файловый менеджер в панели хостинга.
  2. Перейдите в корневую папку сайта (обычно public_html, www или htdocs — там, где лежит index.php/index.html вашего сайта).
  3. Создайте папку .well-known (точка в начале обязательна).
  4. Внутри неё создайте ещё одну папку — acme-challenge.
  5. Внутри acme-challenge создайте новый файл с именем точно как в выводе Certbot (первая строка после «Create a file...», без расширения — не .txt, не .html, вообще без точки в конце).
  6. Откройте этот файл на редактирование и вставьте вторую строку целиком (то, что после точки после имени файла) — без лишних пробелов и переносов строк.
  7. Сохраните.
Проверка перед подтверждением: откройте в браузере адрес из вывода Certbot (http://example.ru/.well-known/acme-challenge/XXXXX...). Должен показаться голый текст без ошибки 404. Если браузер (особенно Chrome) настойчиво пытается открыть эту страницу по https и ругается на сертификат — попробуйте открыть в другом браузере или в режиме инкогнито: сама проверка Let's Encrypt идёт напрямую по http, вне зависимости от того, что показывает ваш браузер.
Если вы указали в команде несколько доменов (например, с www и без), Certbot попросит повторить те же шаги для второго домена — не удаляйте первый файл, второй создаётся рядом с ним.
Только после того как убедились, что файл(ы) открываются корректно — возвращайтесь в PowerShell и нажимайте Enter.

📦 Шаг 5. Получаем файлы сертификата

При успехе Certbot покажет:
Successfully received certificate.
Certificate is saved at: C:\Certbot\live\example.ru\fullchain.pem
Key is saved at:         C:\Certbot\live\example.ru\privkey.pem
This certificate expires on [дата].
Откройте оба файла обычным Блокнотом.

fullchain.pem

Внутри этого файла несколько блоков сертификатов подряд, каждый между -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----:
  • Первый блок (самый верхний) — это ваш собственный сертификат (сертификат домена). Вставляете его в поле «Сертификат» в панели хостинга.
  • Все остальные блоки (второй, третий и т.д. — обычно их два-три) — это промежуточные и корневые сертификаты цепочки доверия. Копируете их все вместе, одним текстом, в поле «Промежуточный сертификат».
  • На виртуальном хостинге nic.ru нет возможности редактировать поле «Промежуточный сертификат», все содержимое файла fullchain.pem необходимо вставить в поле «Сертификат», отделив первый блок от второго, третьего и четвертого пустой строкой при помощи клавиши ввода (нажатием Enter)..

privkey.pem

Весь файл целиком (от -----BEGIN PRIVATE KEY----- до -----END PRIVATE KEY-----) — в поле «Приватный ключ сертификата».
Поле «Пароль для приватного ключа» оставляете пустым — Certbot не шифрует ключ паролем.

🖥️ Шаг 6. Установка сертификата в панели хостинга

  1. Зайдите в раздел вроде «SSL и антивирус» → «Установка сертификата».
  2. Вставьте содержимое трёх файлов в соответствующие поля (см. выше).
  3. Нажмите «Установить».
  4. Если в интерфейсе хостинга сертификат после установки нужно ещё и вручную привязать к домену (переключателем/тумблером) — не забудьте включить его для всех нужных доменов (с www и без).
Подождите 5–15 минут, пока хостинг применит настройки.

🔁 Шаг 7. Принудительный редирект с http на https через .htaccess

Сертификат установлен, но сайт всё ещё будет открываться и по http, и по https одновременно, если явно не настроить редирект. Добавьте (или проверьте, что уже есть) в начало .htaccess:
RewriteEngine On

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [R=301,L]
Почему именно X-Forwarded-Proto, а не %{HTTPS} off или проверка порта: на многих shared-хостингах перед Apache стоит фронтенд-прокси (например, nginx), который сам принимает https-соединения и передаёт их дальше на Apache уже как обычный http. В этом случае и %{HTTPS}, и %{SERVER_PORT} всегда показывают «http», даже если посетитель зашёл по https — и правило начинает заворачивать уже-https-запросы обратно в бесконечный цикл (ошибка ERR_TOO_MANY_REDIRECTS, «сайт выполнил переадресацию слишком много раз»). Проверка через заголовок X-Forwarded-Proto, который такие прокси-серверы передают специально для этой цели, работает надёжно в обоих случаях.
После правки обязательно проверяйте результат в режиме инкогнито — если до этого словили ошибку с редиректами, обычный браузер может закэшировать её и продолжать показывать даже после исправления.

🐛 Частые ошибки и как их избежать

«Ошибка валидации сертификата» при установке в панели. Обычно значит, что перепутаны местами поля — например, в «Сертификат» вставлен не тот блок, или скопирован не весь текст файла целиком (включая строки -----BEGIN/END-----).
Origin CA-сертификат Cloudflare не работает как обычный SSL. Если вы используете Cloudflare для DNS, у Cloudflare есть отдельный тип сертификата — Origin CA (выдаётся на 15 лет). Он не публичный и предназначен только для шифрования канала между Cloudflare и вашим хостингом — браузеры посетителей ему не доверяют напрямую. Чтобы он заработал, домен обязательно должен быть проксирован через Cloudflare (оранжевое облачко в DNS-записях), а режим SSL/TLS выставлен на Full или Full (strict). Без проксирования такой сертификат бесполезен, и лучше использовать обычный Let's Encrypt-сертификат по этой инструкции.
«This zone is either not part of your account» при попытке выпустить Origin-сертификат в Cloudflare. Значит, зона в статусе «Pending» — NS-серверы у регистратора ещё не переключены на Cloudflare.
Сайт вообще перестал открываться после правки .htaccess (ERR_TOO_MANY_REDIRECTS). См. раздел про X-Forwarded-Proto выше.

⏳ Продление — не забыть про 90 дней

Сертификат Let's Encrypt действует 90 дней. Поскольку он выпущен в ручном режиме (--manual), автоматического продления не будет — Certbot сам об этом предупреждает в конце вывода.
Что делать за 1–2 недели до истечения:
Повторить шаги 3–6 этой инструкции для того же домена. Команда та же:
certbot certonly --authenticator manual --preferred-challenges http -d example.ru -d www.example.ru
Либо чуть короче — командой certbot renew, которая попробует продлить все ранее выпущенные сертификаты, но всё равно попросит создать новый файл-подтверждение на сервере (это неизбежно при ручном режиме на shared-хостинге без SSH).

📋 Чек-лист на будущее

✔️ Проверить, нет ли у хостинга встроенного бесплатного SSL (акции, партнёрские сертификаты) — тогда вся эта инструкция не нужна
✔️ Установить Python с галочкой «Add to PATH»
python -m pip install certbot
✔️ Запустить
certbot certonly --authenticator manual --preferred-challenges http -d domain.ru -d www.domain.ru
от имени администратора
✔️ Создать файл(ы) подтверждения через Файловый менеджер хостинга
✔️ Проверить файл в браузере перед подтверждением в Certbot
✔️ Разложить fullchain.pem на «Сертификат» (первый блок) и «Промежуточный сертификат» (остальные блоки)
✔️ Вставить privkey.pem целиком в «Приватный ключ»
✔️ Установить сертификат в панели хостинга, включить его для всех нужных доменов
✔️ Настроить принудительный редирект http → https в .htaccess через X-Forwarded-Proto
✔️ Проверить результат в режиме инкогнито
✔️ Поставить напоминание в календаре на продление через ~80 дней

Заключение

Сайт для малого бизнеса в 2026 году — это не разовая покупка «для галочки», а рабочий инструмент, который либо приносит заявки, либо простаивает без дела. Разница между этими двумя сценариями редко в дизайне — чаще в том, насколько продуманы структура, скорость загрузки, тексты и связка с рекламой.
Если Вы сомневаетесь, нужен ли Вам новый сайт или доработка текущего — начните с честного разбора того, что у Вас есть сейчас. Иногда решение не в переделке всего сайта с нуля, а в устранении двух-трёх конкретных проблем.
Помогу установить бесплатный SSL-сертификат Let's Encrypt или подобрать платный сертификат с усиленной защитой.
Готов бесплатно разобрать Ваш текущий сайт и рекламные кампании — покажу, где именно теряются заявки и бюджет. Написать можно через u11.ru или в блоге u11.ru/blog, где я разбираю подобные кейсы регулярно.
Можете также пройти опрос или заполнить форму обратной связи ниже. Я обязательно отвечу удобным для Вас способом в течение 15 минут в рабочее время.