Поиск по сайту:

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


Введение

Сертбот.

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

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

Предпосылки

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

  • Сервер Ubuntu 16.04 с пользователем без полномочий root, с поддержкой sudo и базовой настройкой брандмауэра, как подробно описано в этом руководстве по настройке сервера Ubuntu 16.04.
  • Доменное имя, указывающее на ваш сервер. Это можно сделать, следуя инструкции «Как настроить имя хоста с помощью DigitalOcean». В этом руководстве будет использоваться example.com.
  • Порт 80 или 443 не должен использоваться на вашем сервере. Если служба, которую вы пытаетесь защитить, находится на компьютере с веб-сервером, который занимает оба этих порта, вам потребуется использовать другой режим, например режим webroot Certbot.

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

Ubuntu включает клиент Certbot в свой репозиторий по умолчанию, но он немного устарел. Вместо этого мы установим его из официального PPA-репозитория Certbot Ubuntu или Personal Package Archive. Это альтернативные репозитории, которые упаковывают более новое или малоизвестное программное обеспечение. Сначала добавьте репозиторий:

  1. sudo add-apt-repository ppa:certbot/certbot

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

  1. sudo apt-get update

И, наконец, установите пакет certbot:

  1. sudo apt-get install certbot

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

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

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

  1. sudo ufw allow 80

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

Output
Rule added Rule added (v6)

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

  1. sudo certbot certonly --standalone --preferred-challenges http -d example.com

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

Output
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2017-10-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. 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, чтобы вывести каталог, в котором хранятся наши ключи и сертификаты:

  1. sudo ls /etc/letsencrypt/live/example.com
Output
cert.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».

Дополнительные сведения о других присутствующих файлах см. в разделе «Где мои сертификаты» документации Certbot.

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

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

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

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

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

  1. sudo nano /etc/letsencrypt/renewal/example.com.conf

Откроется текстовый файл с некоторыми параметрами конфигурации. Добавьте свой хук в последнюю строку:

renew_hook = systemctl reload rabbitmq

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

  1. sudo certbot renew --dry-run

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

Заключение

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

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