Браузеры 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

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 — Автоматическое продление сертификата

Сертификаты 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.