Бесплатный SSL на VPS: Как настроить Let's Encrypt за 5 минут
Руководство по выпуску SSL-сертификатов Let's Encrypt с помощью клиента Certbot. Примеры команд для Ubuntu и CentOS
Получение SSL-сертификата от Let's Encrypt на VPS
SSL-сертификат (TLS-сертификат) – это специальный цифровой файл, который «связывает» сайт с криптографическим ключом и позволяет устанавливать защищённое HTTPS-соединение между сервером и посетителем.
Наличие сертификата необходимо для шифрования данных (например, логинов, паролей, личной информации), даже если на сайте не вводятся особо важные данные. С ним в адресной строке браузера появляется «зелёный замок», обозначающий, что соединение защищено.
Let's Encrypt – это бесплатный автоматизированный открытый центр сертификации (Certificate Authority, CA), созданный некоммерческой организацией ISRG. С помощью Let's Encrypt можно бесплатно получить SSL-сертификат сроком на 90 дней. Для этого нужно подтвердить владение доменом через специальный протокол АСМЕ. Let's Encrypt предлагает готовые инструменты (АСМЕ-клиенты), которые автоматически выполняют выпуск и установку сертификатов без простоя сайта.
Необходимые условия
Перед получением сертификата убедитесь, что у вас есть всё необходимое:
- Доменные имена. Убедитесь, что ваш домен (и, при необходимости,
www-поддомен) корректно указывает на IP вашего VPS через А-запись (и/или АААА для IPv6). Без этой проверки сертификат выпустить нельзя. - Сервер под управлением Linux (VPS). Требуется доступ к терминалу сервера (SSH) с правами администратора (root). На VPS должен быть установлен веб-сервер (например, Apache или Nginx) либо возможность его временно остановить для прохождения валидации.
- Установленный АСМЕ-клиент Certbot. Рекомендуется использовать Certbot – официальный клиент Let's Encrypt, упрощающий процесс выпуска и автоматизации сертификатов.
- Работающий веб-сервер на порту 80. Let's Encrypt проверяет домен через HTTP. Если порт 80 занят, Certbot может временно остановить веб-сервер или использовать веб-рут-плагин.
Установка Certbot
Чтобы получить сертификат, установим Certbot и плагин под ваш веб-сервер. На примере Debian/Ubuntu и CentOS:
-
Debian/Ubuntu:
sudo apt update sudo apt install certbot python3-certbot-apache # для Apache sudo apt install certbot python3-certbot-nginx # для Nginx -
CentOS 7:
sudo yum install epel-release sudo yum install certbot certbot-apache # для Apache sudo yum install certbot certbot-nginx # для Nginx
Certbot и его плагины автоматически добавят в систему сервис (systemd-timer или cron-задачу) для периодической проверки и обновления сертификатов.
Выпуск SSL-сертификата
После установки Certbot перейдём к получению сертификата. Рассмотрим два основных сценария:
-
Apache: Выпустим сертификат для домена
example.comи егоwww-поддомена:sudo certbot --apache -d example.com -d www.example.com -
Nginx: Аналогично для Nginx:
sudo certbot --nginx -d example.com -d www.example.com
Ключ -d указывает домены, для которых нужен сертификат. Сertbot автоматически найдёт и изменит конфигурацию виртуального хоста (с помощью плагинов --apache или --nginx) и перезапустит веб-сервер для включения TLS.
При первом запуске Certbot попросит указать действующий email и принять условия использования. Рекомендуется использовать реальный email – на него придут уведомления о продлении сертификата и возможных проблемах.
Затем Certbot свяжется с Let's Encrypt, который отправит вашему серверу специальный запрос (НТТР-челлендж) для проверки владения доменом. После успешной проверки Certbot завершит выпуск и предложит варианты настройки:
Please choose whether or not to redirect HTTP traffic to HTTPS...
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Выберите нужный вариант (обычно выбирают Redirect, чтобы все запросы шли по HTTPS). Certbot автоматически допишет в конфиг веб-сервера необходимые директивы для перенаправления с HTTP на HTTPS.
После успешного выпуска Certbot покажет сообщение о сохранённых файлах сертификата:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on YYYY-MM-DD. To obtain a new version of this
certificate in the future, simply run certbot again...
SSL-сертификат и ключ будут сохранены в каталоге /etc/letsencrypt/live/your-domain/. Теперь при обращении к сайту по адресу https://example.com браузер должен показывать зелёный замок, подтверждающий защищённое соединение.
Автоматическое обновление сертификата
Сертификаты Let's Encrypt действуют 90 дней, поэтому важно автоматизировать их продление. Certbot по умолчанию настраивает проверку и обновление сертификатов:
-
На Debian/Ubuntu устанавливается systemd-таймер, который дважды в день проверяет все сертификаты и автоматически продлевает те, у которых до окончания действия осталось меньше 30 дней. Проверить, что таймер активен, можно командой:
sudo systemctl status certbot.timerОна покажет, что таймер запущен и ожидает следующий запуск.
-
На CentOS/RHEL может потребоваться ручная настройка. Откройте crontab (
sudo crontab -e) и добавьте задачу, например:30 4 * * * /usr/bin/certbot renew --quietЭто запустит проверку и продление сертификатов ежедневно в 4:30 утра.
Для уверенности раз в месяц проверяйте обновление вручную командой:
sudo certbot renew --dry-run
В случае успеха вы увидите сообщение «certbot dry-run was successful». Если в процессе продления возникает ошибка, Let's Encrypt отправит уведомление на указанный email.
Важно: Certbot обновляет сертификаты только если до их окончания осталось менее 30 дней. Поэтому его таймер или cron можно запускать хоть ежедневно.
Пример работы (Ubuntu + Nginx)
- Убедитесь, что домен
example.comиwww.example.comуказывают на IP вашего VPS (через А-записи). - Подключитесь по SSH к серверу под
rootили привилегированным пользователем. - Установите Certbot и плагин для Nginx:
sudo apt update sudo apt install certbot python3-certbot-nginx - Выпустите сертификат:
sudo certbot --nginx -d example.com -d www.example.com - Укажите email и согласитесь с условиями. Certbot автоматически проверит домен и настроит Nginx.
- При запросе выберите редирект на HTTPS.
- После завершения проверьте сайт в браузере по адресу
https://example.com. Замок в адресной строке означает успешную установку.
Дополнительные возможности и советы
- Wildcard-сертификаты. Let's Encrypt поддерживает wildcard SSL (например,
*.example.com), но для них обязательно используется DNS-валидация. При получении wildcard-сертификата Certbot предложит добавить ТХТ-запись в DNS вашего домена. Это полезно, если нужно защитить сразу все поддомены (например,mail.example.com,shop.example.comи т.д.). - Панели управления. Многие панели (ISPmanager, cPanel, VestaCP) имеют встроенную поддержку Let's Encrypt. Например, в VestaCP достаточно включить опцию «Let's Encrypt» при добавлении домена, и сертификат выпустится автоматически за несколько минут. Панель сама создаст cron-задачу для продления.
- Остановка сервера при standalone. Если на сервере нет веб-сервера, можно запустить Certbot в
standalone-режиме (он поднимет временный веб-сервер на порту 80). При этом убедитесь, что к нему нет доступа (остановите другие сервисы на 80) и выполните:
После получения сертификат нужно будет вручную прописать в конфиг веб-сервера. Этот способ подходит, если другой вариант невозможен.sudo certbot certonly --standalone -d example.com -d www.example.com - Плагины Webroot. Если не хотите останавливать веб-сервер, можно использовать плагин
--webroot, который создаёт файл проверки прямо в корне сайта (обычно.well-known):sudo certbot certonly --webroot -w /var/www/html -d example.com - Мониторинг и резервное копирование. Следите за датой окончания сертификатов. Хотя Certbot обновляет их автоматически, полезно настроить мониторинг или напоминания. Также рекомендуется создавать резервные копии важного содержимого (
/etc/letsencrypt/), чтобы восстановить сертификаты при необходимости.






