В данной статье мы рассмотрим процесс установки и настройки 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
Переходим к получению сертификата. В качестве примера, мы произведем получим сертификат на виртуальный сервер для бесплатного домена третьего уровня вида yourusername.pserver.space.
Первым делом необходимо ввести команду:
certbot certonly
В ответ утилита попросит выбрать способ подтверждения владения доменом:
Первый вариант удобен, если у вас нет настроенного веб-сервера или вы не хотите вносить изменения в существующий. Этот метод создает временный веб-сервер, чтобы подтвердить ваше право на домен. Идеально подходит для простой и быстрой установки. При выборе данного способа важно держать свободным 80 порт.
Второй вариант предпочтительнее, если у вас уже работает веб-сервер, и вы хотите использовать его для подтверждения права на домен. Certbot помещает специальные файлы в папку на вашем сервере, которые затем проверяются удостоверяющим центром.
Мы выбираем первый вариант и нажимаем далее. На текущем этапе потребуется:
- Ввести адрес электронной почты;
- Согласиться с условиями сервиса;
- Согласиться/отказаться от получения писем на электронную почту от лица компании и ее партнеров;
- Указать имя домена, для которого выпускается сертификат.
После завершения процесса выдачи сертификата инструментом Certbot, он укажет путь к каталогу, где хранится выпущенный сертификат и данные для вашей учетной записи:
Вам останется только привязать полученный сертификат к нужному сервису.
Установка сертификата для Nginx или Apache
В инструкции подразумевается, что соблюдены основные условия:
- У вас уже установлен и настроен веб-сервер Nginx или Apache. Он должен быть доступен из интернета через доменное имя, для которого вы хотите получить сертификат;
- Во время установки инструмента вы дополнительно установили плагин для Nginx или Apache при помощи соответствующей команды;
- Firewall разрешает соединения на порты 80 и 443. Если порты закрыты для подключения, сервис будет недоступен для входящих соединений. Подробнее о работе Firewall мы рассказывали в статье настройка Firewall на Linux.
Когда все условия соблюдены, можно сразу приступать к выпуску сертификата. Мы рассмотрим процесс получения SSL-сертификата на сервере с использованием Nginx в качестве примера. Однако, в случае использования веб-сервера Apache, процесс полностью идентичен.
Для получения сертификата необходимо ввести команду:
certbot --nginx # для Nginx
certbot --apache # для Apache
В ответ инструмент запросит: электронную почту, согласие с правилами использования сервиса Let’s Encrypt, а также разрешение на отправку e-mail от лица сервиса и партнеров:
После чего, потребуется указать доменное имя, для которого выпускается сертификат. Certbot может самостоятельно определить домен, если он был указан в поле server_name для конфигурации Nginx или ServerName и ServerAlias для Apache. В случае его отсутствия, программа об этом сообщит, и попросит ввести доменное имя вручную. Затем утилита уточнит требуется ли включить перенаправление запросов с HTTP на HTTPS протокол. Для установки автоматического редиректа необходимо выбирать второй вариант:
Спустя некоторое время Certbot сообщит об успешном получении сертификата для указанного домена. С этого момента все входящие соединения будут перенаправлены с 80 на 443 порт. Инструмент отобразит директории, в которых вы сможете найти все данные сертификата и аккаунта Let’s Encrypt:
В сообщении также указан срок действия полученного сертификата и важные опции для управления всеми действующими сертификатами:
- certonly. Эта опция используется для получения или обновления сертификата без автоматической настройки веб-сервера. Certbot будет только запрашивать или обновлять сертификат, но не будет вносить автоматические изменения в конфигурацию сервера. Ранее мы использовали данную опцию для получения сертификата без привязки к веб-серверу.
- renew используется для автоматического обновления всех сертификатов, которые были получены с помощью Certbot и находятся в пределах срока действия. Программа проверит все сертификаты, и, если какой-либо из них истекает через 30 дней или меньше, он будет автоматически обновлен.
Далее в инструкции мы расскажем, как настроить автоматическое продление сертификатов без вмешательства пользователя каждые 3 месяца.
Автоматическое обновление сертификатов в Certbot
Для Debian/Ubuntu
При использовании данных операционных систем, Certbot самостоятельно добавляет в список задач автоматический запуск скрипта по обновлению установленных сертификатов. Проверить работоспособность скрипта можно при помощи команды:
systemctl status certbot.timer
В ответ отобразится статус сервиса, а также директория с файлом конфигурации. Откроем его при помощи любого текстового редактора. Если у вас нет опыта работы с текстовыми редакторами в Linux, рекомендуем ознакомиться с нашим обзором на самые популярные решения. В данном случае, воспользуемся nano:
nano /lib/systemd/system/certbot.timer
Все важные параметры подчеркнуты:
- Расписание, которое указывает на то, что сервис будет запускаться дважды в день в 00:00 и 12:00;
- Второе значение указывает на случайную задержку в секундах, которая будет добавлена к запуску таймера. В данном случае, это 43200 секунд (12 часов), что делает запуск более случайным и распределяет нагрузку;
- Этот параметр гарантирует, что, если таймер должен был быть выполнен во время отключенной системы, он будет запущен сразу после включения.
Также можно запустить принудительную проверку обновления сертификатов при помощи команды:
certbot renew --dry-run
Если вы используете текущую команду, сертификаты не будут обновлены. Вместо этого инструмент выполнит действия, аналогичные получению сертификата при истечении срока действия. Таким образом, вы можете убедиться в работоспособности сервиса в отношении автоматического обновления.
Для CentOS, Fedora и пр.
Процесс включения автоматического обновления на системах семейства Red Hat немного отличается. В отличии от Debian/Ubuntu, для CentOS и прочих систем, потребуется вручную добавить задачу в планировщик. Для этого воспользуемся инструментом cron:
crontab -e
После чего, в открывшемся файле добавим следующую строку:
0 12 * * * /usr/bin/certbot renew --quiet
Разберем основные аргументы команды:
- Время выполнения. В данном случае команда будет запускаться автоматически в 12:00 каждый день;
- Команда для обновления SSL/TLS-сертификатов с использованием Certbot;
- Флаг --quiet подавляет вывод, что делает процесс более скрытым и менее навязчивым в системных журналах или выводе на экран.
После добавления команды, необходимо сохранить изменения в файле.
Как и в случае с Debian/Ubuntu, вы также можете инициировать принудительную проверку обновления сертификатов:
certbot renew --dry-run
Результат успешного выполнения команды выглядит следующим образом:
Заключение
Мы рассмотрели комплексный процесс установки и настройки Certbot на сервере с Linux. Следуя приведенным инструкциям, вы сможете успешно получить SSL/TLS сертификат от Let’s Encrypt, установить его на свой веб-сервер и настроить автоматическое обновление для обеспечения непрерывной защиты и повышения доверия к вашему веб-ресурсу. Благодаря Certbot вы можете легко создать надежную и безопасную среду для пользователей.