Как использовать Certbot в автономном режиме для получения SSL-сертификатов Let’s Encrypt в Debian 10

Вступление

Let’s Encrypt - это сервис, который предлагает бесплатные SSL-сертификаты через автоматизированный API. Самым популярным клиентом Let Encrypt является клиент EFF Certbot.

Certbot предлагает различные способы проверки вашего домена, получения сертификатов и автоматической настройки Apache и Nginx. В этом руководстве мы обсудим standalone mode Certbot и его использование для защиты других типов служб, таких как почтовый сервер или сообщение. такой брокер, как https://www.rabbitmq.com/[RabbitMQ.

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

Предпосылки

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

  • Сервер Debian 10, пользователь без полномочий root с правами + sudo + и базовый брандмауэр, как описано в https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-10 это руководство по настройке сервера Debian 10.

  • Доменное имя указывало на ваш сервер, что можно сделать, следуя этому documentation при создании записей DNS в DigitalOcean.

  • Порт + 80 + * или * + 443 + должен * не использоваться * на вашем сервере. Если служба, которую вы пытаетесь защитить, находится на компьютере с веб-сервером, который занимает оба этих порта, вам необходимо использовать другой режим, например https://certbot.eff.org/docs/using в Certbot. html # webroot [webroot mode] или режим вызова на основе DNS.

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

Debian 10 включает клиент Certbot в свой репозиторий по умолчанию, и он должен быть достаточно современным для базового использования. Если вам нужно выполнить задачи на основе DNS или использовать другие более новые функции Certbot, вам следует вместо этого установить из репозитория + buster-backports + в соответствии с инструкциями https://certbot.eff.org/lets-encrypt/debianstretch-other [ официальная документация Certbot.

Обновите свой список пакетов:

sudo apt update

Используйте + apt + для установки пакета + certbot +:

sudo apt install certbot

Вы можете проверить вашу установку, попросив + certbot + вывести ее номер версии:

certbot --version
Outputcertbot

Теперь, когда у нас установлен Certbot, давайте запустим его, чтобы получить наш сертификат.

Шаг 2 - Запуск Certbot

Certbot должен ответить на криптографический вызов, выпущенный API Let Encrypt, чтобы доказать, что мы контролируем наш домен. Для этого используются порты + 80 + (HTTP) или + 443 + (HTTPS). Откройте соответствующий порт в брандмауэре:

sudo ufw allow

Замените + 443 + выше, если это порт, который вы используете. + ufw + выведет подтверждение, что ваше правило было добавлено:

OutputRule added
Rule added (v6)

Теперь мы можем запустить Certbot, чтобы получить наш сертификат. Мы будем использовать опцию + - standalone +, чтобы сообщить Certbot о необходимости справиться с проблемой, используя собственный встроенный веб-сервер. Опция + - предпочитаемый-вызов + указывает Certbot использовать порт + 80 + или порт + 443 +. Если вы используете порт + 80 +, вы будете использовать опцию + - предпочитаемый вызов http. Для порта + 443 + используйте + - предпочитаемые вызовы tls-sni +. Наконец, мы будем использовать флаг + -d +, чтобы указать домен, для которого мы запрашиваем сертификат. Вы можете добавить несколько опций + -d + для покрытия нескольких доменов в одном сертификате.

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

sudo certbot certonly --standalone --preferred-challenges  -d

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

OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
  /etc/letsencrypt/live//fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live//privkey.pem
  Your cert will expire on 2019-08-28. To obtain a new or tweaked
  version of this certificate in the future, simply run certbot
  again. To non-interactively renew *all* of your certificates, run
  "certbot renew"
- Your account credentials have been saved in your Certbot
  configuration directory at /etc/letsencrypt. You should make a
  secure backup of this folder now. This configuration directory will
  also contain certificates and private keys obtained by Certbot so
  making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

  Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
  Donating to EFF:                    https://eff.org/donate-le

Мы получили наши сертификаты. Давайте посмотрим, что мы скачали и как использовать файлы с нашим программным обеспечением.

Шаг 3 - Настройка вашего приложения

Настройка вашего приложения для SSL выходит за рамки этой статьи, поскольку у каждого приложения есть свои требования и параметры конфигурации, но давайте посмотрим, что Certbot загрузил для нас. Используйте + ls + для вывода списка каталога, в котором хранятся ваши ключи и сертификаты:

sudo ls /etc/letsencrypt/live/

Вы увидите следующий вывод:

Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README

Файл + README + в этом каталоге содержит больше информации о каждом из этих файлов. Чаще всего вам понадобятся только два из этих файлов:

  • + privkey.pem +: это закрытый ключ для сертификата. Это необходимо сохранить в секрете, поэтому большая часть каталога + / etc / letsencrypt + имеет очень ограниченные разрешения и доступна только пользователю * root *. В большинстве конфигураций программного обеспечения это называется «+ ssl-certificate-key » или « ssl-certificate-key-file +».

  • + fullchain.pem +: это наш сертификат, связанный со всеми промежуточными сертификатами. Большинство программного обеспечения будет использовать этот файл для фактического сертификата, и будет ссылаться на него в своей конфигурации с именем, подобным + ssl-certificate +.

Дополнительную информацию о других файлах можно найти в разделе Where мои сертификаты? Документации Certbot.

Некоторому программному обеспечению потребуются его сертификаты в других форматах или местоположениях или с другими разрешениями пользователя. Лучше всего оставить все в каталоге + letsencrypt + и не изменять там никаких разрешений (в любом случае разрешения будут перезаписаны при обновлении), но иногда это не вариант. В этом случае вам нужно будет написать скрипт для перемещения файлов и изменения прав доступа по мере необходимости. Этот скрипт нужно будет запускать всякий раз, когда Certbot обновляет сертификаты, о чем мы поговорим позже.

Шаг 4 - Обработка автоматических продлений Certbot

Сертификаты Let Encrypt действительны только в течение девяноста дней. Это должно стимулировать пользователей автоматизировать процесс обновления сертификата. Пакет + certbot +, который мы установили, позаботится об этом, добавив скрипт обновления в + / etc / cron.d +. Этот скрипт запускается два раза в день и обновляет любой сертификат, срок действия которого истекает в течение тридцати дней.

Поскольку наши сертификаты обновляются автоматически, нам все еще нужен способ запускать другие задачи после обновления. Нам нужно, по крайней мере, перезапустить или перезагрузить наш сервер, чтобы получить новые сертификаты, и, как уже упоминалось в шаге 3, нам может потребоваться каким-то образом манипулировать файлами сертификатов, чтобы они работали с программным обеспечением, которое мы используем. В этом и заключается цель httt://certbot.eff.org/docs/api/hooks.html?highlight=renew_hook#certbot.hooks.renew_hook [+ renew_hook +] параметр Certbot.

Чтобы добавить + renew_hook +, нам нужно обновить конфигурационный файл обновления Certbot. Certbot запоминает все детали того, как вы впервые получили сертификат, и будет работать с теми же параметрами при обновлении. Нам просто нужно добавить в наш крючок. Откройте файл конфигурации в вашем любимом редакторе:

sudo nano /etc/letsencrypt/renewal/.conf

Откроется текстовый файл с некоторыми параметрами конфигурации. Добавьте свой крючок в последнюю строку. В этом случае мы используем пример, который перезагрузит сервис + rabbitmq +:

/etc/letsencrypt/renewal/your_domain.conf

renew_hook =

Измените приведенную выше команду на все, что вам нужно, чтобы перезагрузить сервер или запустить собственный скрипт проверки файлов. В Debian вы обычно используете + systemctl + для перезагрузки сервиса.

Сохраните и закройте файл, затем выполните пробный запуск Certbot, чтобы убедиться, что синтаксис в порядке:

sudo certbot renew --dry-run

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

Заключение

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

Для получения дополнительной информации, пожалуйста, обратитесь к Certbot документации.

Related