Установка SSL-сертификата Let's Encrypt на VPS — Nginx и Apache
📖 Гайды

Как установить SSL-сертификат Let’s Encrypt на VPS бесплатно

Марина
Марина
📅 27 мая 2026 👁 87 просмотров
Как установить SSL-сертификат Let’s Encrypt на VPS бесплатно

Браузеры Chrome и Firefox помечают HTTP-сайты как «Небезопасные» прямо в адресной строке, а Google учитывает наличие HTTPS как сигнал ранжирования. Установить SSL-сертификат Let’s Encrypt на VPS можно бесплатно за 10–15 минут — без регистрации, без оплаты и без ручного продления. Ниже — установка SSL через Certbot для Nginx и Apache на Ubuntu.

Что такое SSL/TLS и зачем он нужен сайту

SSL/TLS — протоколы шифрования, которые защищают трафик между браузером пользователя и сервером. Без них данные передаются в открытом виде: пароли, платёжные реквизиты, переписка. Технически «SSL» давно заменён «TLS», но в обиходе оба термина означают одно и то же — защищённое HTTPS-соединение.

С 2017 года Chrome отмечает все HTTP-страницы с формами как небезопасные, с 2018-го — все HTTP без исключений. Для посетителя это означает предупреждение в адресной строке ещё до загрузки контента. По нашим наблюдениям, конверсия на таких сайтах падает ощутимо — часть пользователей просто уходит.

Let’s Encrypt — некоммерческий удостоверяющий центр, который выдаёт сертификаты бесплатно и автоматически через ACME-протокол (Automatic Certificate Management Environment). Сертификат действует 90 дней, но Certbot продлевает его сам — без участия владельца сайта.

Требования перед установкой

  • VPS с Ubuntu 20.04 или 22.04 (инструкция применима и к Debian);
  • установленный веб-сервер — Nginx или Apache;
  • домен с DNS A-записью, уже указывающей на IP сервера;
  • открытые порты 80 и 443 в файрволе;
  • права sudo или root.

Certbot не выдаст сертификат, если DNS ещё не обновился. Проверьте перед установкой: ping yourdomain.com должен возвращать IP вашего сервера. Обновление DNS у разных регистраторов занимает от нескольких минут до суток.

Если SSH на сервере ещё не настроен — сначала прочитайте Как настроить SSH на VPS: там разобраны ключи, смена порта и Fail2ban. Если VPS ещё нет — смотрите каталог VPS-провайдеров.

Шаг 1 — Установка Certbot

Как установить SSL-сертификат Let's Encrypt на VPS бесплатно — иллюстрация

Certbot — официальный клиент Let’s Encrypt. Рекомендуем устанавливать его через snap: пакет в apt-репозиториях Ubuntu часто отстаёт от актуальной версии.

Установка на Ubuntu / Debian

sudo apt update
sudo apt install snapd -y
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Первые две команды обновляют пакеты и устанавливают snap. --classic при установке certbot нужен, потому что он требует доступа к системным файлам веб-сервера. Последняя строка создаёт символическую ссылку — после этого команда certbot работает из любой директории.

Проверка версии Certbot

certbot --version

Если видите номер версии — установка прошла успешно. Полная документация Certbot содержит инструкции для разных дистрибутивов и веб-серверов.

Шаг 2 — Получение сертификата для Nginx

Certbot умеет автоматически редактировать конфиг Nginx — добавить SSL и настроить редирект. Для этого используется плагин --nginx:

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

—nginx — плагин, который работает с конфигом Nginx напрямую. -d — указывает домен; можно передавать несколько флагов -d для разных доменов и поддоменов. Certbot запросит email для уведомлений об истечении сертификата и попросит принять условия использования.

Что Certbot делает с конфигом Nginx

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

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # ваш основной конфиг сайта
}

Редирект с HTTP на HTTPS Certbot также пропишет автоматически.

Проверка работы HTTPS

Проверьте конфиг и перезагрузите Nginx:

sudo nginx -t && sudo systemctl reload nginx

Откройте https://yourdomain.com в браузере — в адресной строке должен появиться замок. Если видите предупреждение безопасности, проверьте цепочку сертификатов.

Проверьте редирект вручную: откройте http://yourdomain.com (без s) и убедитесь, что браузер автоматически переходит на HTTPS с кодом 301.

Шаг 3 — Получение сертификата для Apache

Для Apache процесс аналогичен — только плагин другой:

sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

Что меняется в конфиге Apache

Certbot создаёт отдельный .conf-файл с SSL VirtualHost в директории /etc/apache2/sites-available/. Пример содержимого:

<VirtualHost *:443>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem

    # ваш основной конфиг
</VirtualHost>

Проверка и перезапуск Apache

sudo apache2ctl configtest
sudo systemctl reload apache2

Если configtest вернул Syntax OK — конфиг валиден и Apache перезагрузится без ошибок.

Шаг 4 — Ручная настройка редиректа с HTTP на HTTPS

Если автонастройка Certbot не сработала или вы хотите контролировать редирект вручную, вот правильные конфиги.

Редирект в Nginx

Добавьте отдельный server-блок для порта 80:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

return 301 — постоянный редирект, важен для SEO: передаёт «вес» страниц с HTTP-версии на HTTPS. $host$request_uri сохраняет домен и путь при переходе.

Редирект в Apache

В файл .htaccess или в VirtualHost для порта 80:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} off — правило срабатывает только для HTTP-запросов. R=301 — постоянный редирект. L — остановить обработку остальных правил после срабатывания этого.

Шаг 5 — Автоматическое продление сертификата

Как установить SSL-сертификат Let's Encrypt на VPS бесплатно — иллюстрация

Сертификаты Let’s Encrypt действуют 90 дней. Certbot, установленный через snap, регистрирует systemd-таймер, который проверяет и продлевает сертификаты автоматически дважды в день.

Проверьте, что таймер активен:

sudo systemctl status snap.certbot.renew.timer

Статус active (waiting) означает, что автопродление работает. Проверьте, что продление сработает корректно, не меняя реальный сертификат:

sudo certbot renew --dry-run

Флаг --dry-run имитирует полный процесс продления без реального обновления. Если ошибок нет — автопродление настроено правильно.

Ручная настройка cron (если systemd не используется)

На некоторых системах или при нестандартной установке проще добавить задачу в crontab:

0 3 * * * certbot renew --quiet

Задача запускается каждый день в 3:00. —quiet подавляет вывод при успешном обновлении, но ошибки всё равно попадают в лог — вы их увидите при проверке.

Проверьте статус таймера сразу после установки. Если он неактивен, а cron не настроен — через 90 дней сертификат истечёт и сайт перестанет открываться по HTTPS.

Шаг 6 — Wildcard-сертификат для всех поддоменов

Обычный сертификат покрывает конкретный домен и его www-версию. Если у вас несколько поддоменов — api.yourdomain.com, mail.yourdomain.com, admin.yourdomain.com — удобнее получить wildcard-сертификат (*.yourdomain.com), который покрывает все сразу.

Wildcard-сертификат получают через DNS-challenge — Certbot не может автоматически подтвердить владение через HTTP, поэтому нужна TXT-запись в DNS:

sudo certbot certonly --manual --preferred-challenges dns \
  -d yourdomain.com -d *.yourdomain.com

Certbot выдаст строку вида _acme-challenge.yourdomain.com IN TXT "случайная_строка". Добавьте эту TXT-запись в панели вашего DNS-регистратора, подождите несколько минут и нажмите Enter в терминале. После проверки сертификат будет выдан.

Wildcard-сертификат не продлевается автоматически через плагины --nginx и --apache — DNS-challenge требует ручного подтверждения или специального hook-скрипта для API регистратора. Учитывайте это при планировании продления.

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

  • DNS A-запись ещё не обновилась — Certbot получает ошибку Connection timed out.
  • Порт 80 закрыт в UFW — Certbot не может пройти HTTP-challenge для подтверждения домена.
  • На сервере нет виртуального хоста для домена — Certbot не находит конфиг и отказывает.
  • Mixed content после переключения на HTTPS — изображения, скрипты или стили грузятся по HTTP.
  • Сертификат выдан, но браузер показывает «Небезопасно» — неполная цепочка сертификатов (chain).
  • Автопродление не работает, потому что порт 80 постоянно закрыт — HTTP-challenge не проходит.
  • Превышен лимит выдачи Let’s Encrypt: 5 сертификатов на домен в неделю — актуально при экспериментах и пересозданиях.

Проверка SSL-сертификата после установки

Два способа убедиться, что всё работает правильно.

Первый — сервис SSL Labs (ssllabs.com/ssltest): введите домен и через минуту получите оценку A или A+, информацию о цепочке сертификатов, поддерживаемых протоколах и слабых местах конфигурации.

Второй — прямо из терминала:

echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates

Команда покажет notBefore (дата выдачи) и notAfter (дата истечения). В поле Issuer должна быть строка Let's Encrypt. Если дата notAfter — через 90 дней от установки, значит автопродление ещё не срабатывало, это нормально.

Дополнительная защита — HSTS и HTTP/2

После настройки HTTPS в Nginx можно усилить безопасность двумя простыми директивами.

HSTS (HTTP Strict Transport Security) — заголовок, который говорит браузеру всегда использовать HTTPS для этого домена, даже если пользователь вручную введёт http://. Добавьте в server-блок с SSL:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

max-age=31536000 — браузер запоминает правило на год. includeSubDomains распространяет HSTS на все поддомены.

HTTP/2 ускоряет загрузку страниц за счёт мультиплексирования запросов. Включается одним словом в listen-директиве:

listen 443 ssl http2;

Не добавляйте параметр preload в HSTS, если не уверены в постоянном SSL на домене. Preload-список встроен в браузеры и вывести из него домен крайне сложно — это необратимое действие.

Ну и в заключение

SSL-сертификат установлен, редирект с HTTP на HTTPS настроен, автопродление работает. Через 90 дней Certbot продлит сертификат сам — без вашего участия. Если хотите убедиться, что всё идёт по плану, раз в квартал запускайте sudo certbot renew --dry-run.

Следующие шаги после SSL: настройка Nginx под производительность, подключение CDN, конфигурация кэширования. Полезные материалы: Как настроить VPS с нуля и NVMe vs SSD для сервера.

В нашем каталоге 45 хостеров — у каждого карточка с тарифами, отзывами и особенностями. Посмотреть VPS-провайдеров с поддержкой Let’s Encrypt в нашем каталоге и найти сервер под ваш проект за пару минут. Также есть отдельные разделы: VPS в Нидерландах, VPS в Германии. Среди провайдеров, у которых всё работает без сюрпризов: Selectel, Timeweb Cloud, Fornex.

Поделиться:
Марина
Редактор · FREEHOSTING
Главный редактор FREEHOSTING. С 2020 года тестирует VDS, VPS и хостинг-провайдеров — арендует серверы, нагружает их реальными проектами и пишет честные обзоры по итогам. Помогает читателям выбирать хостинг под свои задачи: от Telegram-бота до production-сайта.