База Знаний

Простые инструкции по работе с сервисом ProfitServer
  1. Главная
  2. База Знаний
  3. Certbot - получаем сертификат Let's Encrypt

Certbot - получаем сертификат Let's Encrypt


В данной статье мы рассмотрим процесс установки и настройки Certbot на сервер с Linux. Подробно расскажем, как получить SSL/TLS - сертификат Let's Encrypt для вашего домена. Опишем его последующую установку на веб-сервер (такой как Nginx или Apache) и настроим автоматическое обновление сертификатов для обеспечения непрерывного безопасного соединения с вашим веб-ресурсом.

Certbot - это бесплатный и открытый инструмент, разработанный для автоматического получения и обновления SSL/TLS сертификатов. Он играет ключевую роль в обеспечении безопасного соединения между сервером и клиентом, защищая данные от несанкционированного доступа. Certbot облегчает процесс установки и обновления SSL-сертификата. Сертификат не только влияет на безопасность, но и повышает доверие пользователей к вашему веб-ресурсу. Также улучшается репутация сайта и позиции в поисковых системах.

Установка Certbot

По умолчанию Certbot уже есть в большинстве дистрибутивов, поэтому для установки на системах Debian/Ubuntu достаточно обновить список пакетов:

apt update

После чего, запустить процесс установки:

apt install certbot

Certbot поддерживает плагины, которые способны помочь в установке и настройке сертификата для веб-сервера. Для их установки воспользуйтесь соответствующей командой:

apt install certbot python3-certbot-nginx # для Nginx
apt install certbot python3-certbot-apache # для Apache

Установка для систем Red Hat (таких как RHEL, CentOS, Fedora) немного отличается. В начале нужно добавить репозиторий EPEL:

yum install epel-release

Затем установить инструмент:

yum install certbot

Аналогично, имеется возможность выбрать плагин для конкретного веб-сервера:

yum install python3-certbot-nginx # для Nginx
yum install python3-certbot-apache # для Apache

Сразу после установки можно переходить к получению сертификата.

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

В данном разделе мы рассмотрим процесс получения сертификата без привязки к конкретному веб-серверу, после чего опишем процесс установки сертификата для Nginx и Apache. Однако, прежде всего, необходимо разобрать синтаксис и функционал программы. Выглядит он следующим образом:

certbot команда опция -d домен

К основным командам можно отнести:

certbot certonly - Получает сертификат, но не устанавливает его.
certbot certificates - Эта команда выводит список всех установленных сертификатов.
certbot renew - Продлевает существующий сертификат.
certbot revoke - Отзывает существующий сертификат.
certbot delete - Удаляет существующий сертификат.

Наиболее используемые опции:

--nginx - Использование сценариев конфигурации Nginx для проверки домена.
--apache - Использование сценариев конфигурации Apache для проверки домена.
-d - Список доменов, для которых запрашивается сертификат.
--standalone - Использование автономного режима для проверки домена.
--manual - Выполняет ручную проверку домена.

Это лишь пример наиболее частых команд и опций. С полным списком возможностей программы можно ознакомиться в справке:

certbot –help
Раздел Help инструмента Certbot

Переходим к получению сертификата. В качестве примера, мы произведем получим сертификат на виртуальный сервер для бесплатного домена третьего уровня вида yourusername.pserver.space.

Первым делом необходимо ввести команду:

certbot certonly

В ответ утилита попросит выбрать способ подтверждения владения доменом:

Как получить SSL-сертификат Certbot

Первый вариант удобен, если у вас нет настроенного веб-сервера или вы не хотите вносить изменения в существующий. Этот метод создает временный веб-сервер, чтобы подтвердить ваше право на домен. Идеально подходит для простой и быстрой установки. При выборе данного способа важно держать свободным 80 порт.

Второй вариант предпочтительнее, если у вас уже работает веб-сервер, и вы хотите использовать его для подтверждения права на домен. Certbot помещает специальные файлы в папку на вашем сервере, которые затем проверяются удостоверяющим центром.

Мы выбираем первый вариант и нажимаем далее. На текущем этапе потребуется:

  1. Ввести адрес электронной почты;
  2. Согласиться с условиями сервиса;
  3. Согласиться/отказаться от получения писем на электронную почту от лица компании и ее партнеров;
  4. Указать имя домена, для которого выпускается сертификат.
Данные для получения SSL-сертификата

После завершения процесса выдачи сертификата инструментом Certbot, он укажет путь к каталогу, где хранится выпущенный сертификат и данные для вашей учетной записи:

Данные полученного SSL-сертификата

Вам останется только привязать полученный сертификат к нужному сервису.

Установка сертификата для Nginx или Apache

В инструкции подразумевается, что соблюдены основные условия:

  1. У вас уже установлен и настроен веб-сервер Nginx или Apache. Он должен быть доступен из интернета через доменное имя, для которого вы хотите получить сертификат;
  2. Во время установки инструмента вы дополнительно установили плагин для Nginx или Apache при помощи соответствующей команды;
  3. Firewall разрешает соединения на порты 80 и 443. Если порты закрыты для подключения, сервис будет недоступен для входящих соединений. Подробнее о работе Firewall мы рассказывали в статье настройка Firewall на Linux.

Когда все условия соблюдены, можно сразу приступать к выпуску сертификата. Мы рассмотрим процесс получения SSL-сертификата на сервере с использованием Nginx в качестве примера. Однако, в случае использования веб-сервера Apache, процесс полностью идентичен.

Для получения сертификата необходимо ввести команду:

certbot --nginx # для Nginx
certbot --apache # для Apache

В ответ инструмент запросит: электронную почту, согласие с правилами использования сервиса Let’s Encrypt, а также разрешение на отправку e-mail от лица сервиса и партнеров:

Получение SSL-сертификата для Nginx и Apache

После чего, потребуется указать доменное имя, для которого выпускается сертификат. Certbot может самостоятельно определить домен, если он был указан в поле server_name для конфигурации Nginx или ServerName и ServerAlias для Apache. В случае его отсутствия, программа об этом сообщит, и попросит ввести доменное имя вручную. Затем утилита уточнит требуется ли включить перенаправление запросов с HTTP на HTTPS протокол. Для установки автоматического редиректа необходимо выбирать второй вариант:

Перенаправление запросов с HTTP на HTTPS

Спустя некоторое время Certbot сообщит об успешном получении сертификата для указанного домена. С этого момента все входящие соединения будут перенаправлены с 80 на 443 порт. Инструмент отобразит директории, в которых вы сможете найти все данные сертификата и аккаунта Let’s Encrypt:

Успешный выпуск сертификата Certbot

В сообщении также указан срок действия полученного сертификата и важные опции для управления всеми действующими сертификатами:

  1. certonly. Эта опция используется для получения или обновления сертификата без автоматической настройки веб-сервера. Certbot будет только запрашивать или обновлять сертификат, но не будет вносить автоматические изменения в конфигурацию сервера. Ранее мы использовали данную опцию для получения сертификата без привязки к веб-серверу.
  2. renew используется для автоматического обновления всех сертификатов, которые были получены с помощью Certbot и находятся в пределах срока действия. Программа проверит все сертификаты, и, если какой-либо из них истекает через 30 дней или меньше, он будет автоматически обновлен.

Далее в инструкции мы расскажем, как настроить автоматическое продление сертификатов без вмешательства пользователя каждые 3 месяца.

Автоматическое обновление сертификатов в Certbot

Для Debian/Ubuntu

При использовании данных операционных систем, Certbot самостоятельно добавляет в список задач автоматический запуск скрипта по обновлению установленных сертификатов. Проверить работоспособность скрипта можно при помощи команды:

systemctl status certbot.timer
Проверка статуса сервиса certbot.timer

В ответ отобразится статус сервиса, а также директория с файлом конфигурации. Откроем его при помощи любого текстового редактора. Если у вас нет опыта работы с текстовыми редакторами в Linux, рекомендуем ознакомиться с нашим обзором на самые популярные решения. В данном случае, воспользуемся nano:

nano /lib/systemd/system/certbot.timer
Просмотр конфигурации certbot.timer

Все важные параметры подчеркнуты:

  1. Расписание, которое указывает на то, что сервис будет запускаться дважды в день в 00:00 и 12:00;
  2. Второе значение указывает на случайную задержку в секундах, которая будет добавлена к запуску таймера. В данном случае, это 43200 секунд (12 часов), что делает запуск более случайным и распределяет нагрузку;
  3. Этот параметр гарантирует, что, если таймер должен был быть выполнен во время отключенной системы, он будет запущен сразу после включения.

Также можно запустить принудительную проверку обновления сертификатов при помощи команды:

certbot renew --dry-run

Если вы используете текущую команду, сертификаты не будут обновлены. Вместо этого инструмент выполнит действия, аналогичные получению сертификата при истечении срока действия. Таким образом, вы можете убедиться в работоспособности сервиса в отношении автоматического обновления.

Для CentOS, Fedora и пр.

Процесс включения автоматического обновления на системах семейства Red Hat немного отличается. В отличии от Debian/Ubuntu, для CentOS и прочих систем, потребуется вручную добавить задачу в планировщик. Для этого воспользуемся инструментом cron:

crontab -e

После чего, в открывшемся файле добавим следующую строку:

0 12 * * * /usr/bin/certbot renew --quiet

Разберем основные аргументы команды:

  1. Время выполнения. В данном случае команда будет запускаться автоматически в 12:00 каждый день;
  2. Команда для обновления SSL/TLS-сертификатов с использованием Certbot;
  3. Флаг --quiet подавляет вывод, что делает процесс более скрытым и менее навязчивым в системных журналах или выводе на экран.

После добавления команды, необходимо сохранить изменения в файле.

Как и в случае с Debian/Ubuntu, вы также можете инициировать принудительную проверку обновления сертификатов:

certbot renew --dry-run

Результат успешного выполнения команды выглядит следующим образом:

Результат успешной проверки команды renew

Заключение

Мы рассмотрели комплексный процесс установки и настройки Certbot на сервере с Linux. Следуя приведенным инструкциям, вы сможете успешно получить SSL/TLS сертификат от Let’s Encrypt, установить его на свой веб-сервер и настроить автоматическое обновление для обеспечения непрерывной защиты и повышения доверия к вашему веб-ресурсу. Благодаря Certbot вы можете легко создать надежную и безопасную среду для пользователей.

Предыдущая статья Высокая нагрузка на сервер
Следующая статья Менеджеры пакетов Linux

Задайте вопрос

Мы всегда готовы ответить на Ваши вопросы в любое время суток.
Пожалуйста, проверьте нашу Базу Знаний, скорее всего ответ на ваш вопрос там уже есть!