Как получить SSL-сертификаты Let’s Encrypt с помощью проверки DNS Certbot CloudFlare

Kak Polucit Ssl Sertifikaty Let S Encrypt S Pomos U Proverki Dns Certbot Cloudflare



Certbot — это клиент ACME для центра сертификации (CA) Let’s Encrypt. Он используется для создания SSL-сертификата Let’s Encrypt и его автоматического обновления. По умолчанию Certbot использует задачу Let’s Encrypt HTTP-01 для проверки владения доменом и выдачи SSL-сертификата для домена. Но запрос HTTP-01 не сработает, если у вас нет общедоступного IP-адреса и ваш компьютер доступен из Интернета. Итак, если вы хотите использовать SSL-сертификаты Let’s Encrypt для своей домашней или частной сети, вам придется вместо этого использовать вызов DNS-01. При использовании запроса DNS-01 Let’s Encrypt проверяет право собственности на домен, используя DNS-сервер домена. Таким образом, это работает и для частных сетей.

Подробное объяснение того, как работает задача Let’s Encrypt DNS-01 (или проверка DNS), прочитайте в статье «Что такое задача Let’s Encrypt DNS-01 и как ее использовать для получения SSL-сертификатов».

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







Тема содержания:

  1. Управление вашим доменом с помощью CloudFlare DNS
  2. Установка Certbot и плагина Certbot CloudFlare в Ubuntu/Debian
  3. Установка Certbot и плагина Certbot CloudFlare в Fedora
  4. Установка Certbot и плагина Certbot CloudFlare в RHEL/AlmaLinux/Rocky Linux/CentOS Stream
  5. Проверка правильности установки Certbot и плагина Certbot CloudFlare
  6. Генерация токена API CloudFlare
  7. Безопасное хранение токена CloudFlare API на компьютере/сервере
  8. Генерация сертификата SSL с использованием проверки DNS Certbot CloudFlare
  9. Листинг SSL-сертификатов Let’s Encrypt с помощью Certbot
  10. Обновление SSL-сертификатов Let’s Encrypt с помощью Certbot
  11. Заключение
  12. Рекомендации

Управление вашим доменом с помощью CloudFlare DNS

Чтобы получить SSL-сертификат Let’s Encrypt с использованием проверки DNS CloudFlare, у вас должна быть учетная запись CloudFlare, и ваш домен должен использовать DNS CloudFlare. Ты можешь создать учетную запись CloudFlare бесплатно и DNS-сервис CloudFlare также можно использовать бесплатно.



Чтобы управлять своим доменом с помощью CloudFlare DNS, вы можете выполнить одно из следующих действий:



  • Зарегистрируйте свой домен в CloudFlare
  • Перенесите свой домен в CloudFlare
  • Измените DNS-сервер имен вашего доменного имени на DNS-сервер CloudFlare с панели управления регистратора вашего домена.

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





Установка Certbot и плагина Certbot CloudFlare в Ubuntu/Debian

Плагин Certbot и Certbot CloudFlare доступны в официальном репозитории пакетов Ubuntu/Debian. Таким образом, вы можете очень легко установить их в Ubuntu/Debian.

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



$ судо подходящее обновление

  Скриншот компьютера. Описание создается автоматически.

Чтобы установить Certbot и плагин Certbot CloudFlare DNS, выполните следующую команду:

$ судо подходящий установить certbot python3-certbot-dns-cloudflare

Для подтверждения установки нажмите «Y», а затем нажмите <Ввод> .

Устанавливаются DNS-плагин Certbot и Certbot CloudFlare. Это займет некоторое время.

На этом этапе должны быть установлены Certbot и плагин Certbot CloudFlare DNS.

Установка Certbot и плагина Certbot CloudFlare в Fedora

Плагин Certbot и Certbot CloudFlare доступны в официальном репозитории пакетов Fedora и могут быть легко установлены в Fedora.

Сначала обновите базу данных пакетов DNF с помощью следующей команды:

$ судо dnf makecache

  Скриншот компьютера. Описание создается автоматически.

Чтобы установить DNS-плагин Certbot и Certbot CloudFlare в Fedora, выполните следующую команду:

$ судо ДНФ установить certbot python3-certbot-dns-cloudflare

Для подтверждения установки нажмите «Y», а затем нажмите <Ввод> .

  Скриншот компьютера. Описание создается автоматически.

Устанавливаются DNS-плагин Certbot и Certbot CloudFlare. Это займет некоторое время.

  Снимок экрана компьютерной программы. Описание создается автоматически.

На этом этапе в Fedora должны быть установлены Certbot и DNS-плагин Certbot CloudFlare.

  Скриншот компьютера. Описание создается автоматически.

Установка Certbot и плагина Certbot CloudFlare в RHEL/AlmaLinux/Rocky Linux/CentOS Stream

Плагин Certbot CloudFlare DNS недоступен в официальных репозиториях пакетов RHEL/AlmaLinux/Rocky Linux/CentOS Stream. Плагин Certbot CloudFlare DNS доступен в репозитории пакетов EPEL. Вы можете включить репозиторий пакетов EPEL в RHEL/AlmaLinux/Rocky Linux/CentOS Stream и установить оттуда DNS-плагин Certbot CloudFlare.

После включения репозитория пакетов EPEL обновите кеш базы данных DNF с помощью следующей команды:

$ судо dnf makecache

  Скриншот компьютера. Описание создается автоматически.

Затем установите DNS-плагин Certbot и Certbot CloudFlare в свою систему RHEL/AlmaLinux/Rocky Linux/CentOS Stream с помощью следующей команды:

$ судо ДНФ установить certbot python3-certbot-dns-cloudflare

Для подтверждения установки нажмите «Y», а затем нажмите <Ввод> .

  Скриншот компьютера. Описание создается автоматически.

Устанавливаются DNS-плагин Certbot и Certbot CloudFlare. Это займет некоторое время.

  Скриншот компьютера. Описание создается автоматически.

Чтобы принять ключ GPG репозитория EPEL, нажмите «Y», а затем нажмите <Ввод> .

  Скриншот компьютера. Описание создается автоматически.

На этом этапе должны быть установлены Certbot и плагин Certbot CloudFlare DNS.

  Скриншот компьютера. Описание создается автоматически.

Проверка правильности установки Certbot и плагина Certbot CloudFlare

Чтобы проверить, установлен ли Certbot на вашем компьютере, выполните следующую команду:

$ сертификатбот --версия

Если Certbot установлен, команда должна вывести номер версии установленного Certbot на вашем компьютере.

Как видите, на нашей машине с Debian установлен Certbot 2.1.0.

  Скриншот компьютера. Описание создается автоматически.

Чтобы проверить, установлен ли на вашем компьютере DNS-плагин Certbot CloudFlare, выполните следующую команду:

$ судо Плагины для сертификатов

Если установлен DNS-плагин Certbot CloudFlare, вы должны найти «dns-cloudflare» в списке плагинов, как показано на следующем снимке экрана:

  Скриншот компьютера. Описание создается автоматически.

Генерация токена API CloudFlare

Чтобы подтвердить право собственности на домен, Certbot необходимо добавить запись TXT в домен, которым управляет DNS-сервер CloudFlare. Для этого Certbot необходим доступ к токену API CloudFlare. Вы можете создать токен API для своего домена на панели управления CloudFlare.

Сначала войдите в свою учетную запись CloudFlare. Затем нажмите на значок своего профиля.

> Мой профайл из правого верхнего угла страницы.

Перейдите в раздел «Токены API». [1] и нажмите «Создать токен» [2] .

  Скриншот компьютера. Описание создается автоматически.

Нажмите «Использовать шаблон» в разделе «Редактировать DNS зоны».

  Скриншот компьютера. Описание создается автоматически.

В разделе «Разрешения» предоставьте разрешение «Редактирование» для «Зоны DNS», выбрав отмеченные параметры в раскрывающихся меню.

  Скриншот компьютера. Описание создается автоматически.

Если вы управляете несколькими доменами с помощью CloudFlare, вы можете разрешить изменение «Конкретной зоны» в разделе «Ресурс зоны». Разрешение токену API изменять только одну зону более безопасно, чем разрешение токену API изменять все зоны. Это связано с тем, что если токен API будет скомпрометирован, поверхность атаки будет меньше и будет нанесен меньший ущерб.

  Скриншот компьютера. Описание создается автоматически.

Если вы хотите использовать один ключ API для изменения всех ваших доменов, управляемых CloudFlare, выберите «Все зоны» в разделе «Ресурс зоны».

  Скриншот компьютера. Описание создается автоматически.

Завершив настройку токена API, нажмите «Продолжить обзор».

  Скриншот компьютера. Описание создается автоматически.

Будет отображена сводка действий, которые вы можете выполнить в своих доменах, управляемых CloudFlare, с помощью токена API. Нажмите «Создать токен».

  Скриншот компьютера. Описание создается автоматически.

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

LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5

  Скриншот компьютера. Описание создается автоматически.

Безопасное хранение токена CloudFlare API на компьютере/сервере

Certbot должен использовать токен CloudFlare API, чтобы добавить новую запись TXT для вашего домена на DNS-сервер CloudFlare. Итак, вы должны хранить токен CloudFlare API на своем компьютере/сервере. Хранение токена API без обеспечения надлежащих разрешений на доступ к файлу может предоставить другим программам/пользователям доступ к токену API. Это не то, что вам нужно по соображениям безопасности. В этом разделе мы покажем вам, как безопасно хранить токен API CloudFlare в файловой системе.

Сначала создайте каталог (например, ~/.secrets/certbot), в котором вы хотите сохранить ключ API CloudFlare, следующим образом:

$ мкдир -ПВ ~ / .секреты / сертификатбот

  Скриншот компьютера. Описание создается автоматически.

Создайте файл «cloudflare.ini» во вновь созданном каталоге (т. е. ~/.secrets/certbot) и откройте его в своем любимом текстовом редакторе (т. е. nano) следующим образом:

$ нано ~ / .секреты / сертификатбот / Cloudflare.ini

Введите следующую строку в файл «cloudflare.ini» и нажмите + Икс затем «Y» и <Ввод> чтобы сохранить его (если вы используете текстовый редактор nano).

dns_cloudflare_api_token = < ваш-cloudflare-api-токен >

  Скриншот компьютера. Описание создается автоматически.

Чтобы обеспечить правильное разрешение доступа к файлу «cloudflare.ini», выполните следующие команды, чтобы убедиться, что только пользователь root имеет доступ на чтение и запись к файлу:

$ судо чаун корень: корень ~ / .секреты / сертификатбот / Cloudflare.ini

$ судо chmod 06:00 ~ / .секреты / сертификатбот / Cloudflare.ini

Как видите, только пользователь root имеет права на чтение и запись файла «cloudflare.ini».

$ лс -левый ~ / .секреты / сертификатбот / Cloudflare.ini

Другие пользователи, которые попытаются прочитать файл «cloudflare.ini», получат сообщение об ошибке «Отказано в доступе».

$ кот ~ / .секреты / сертификатбот / Cloudflare.ini

  Снимок экрана компьютера. Описание создается автоматически.

Генерация сертификата SSL с использованием проверки DNS Certbot CloudFlare

Чтобы сгенерировать SSL-сертификат Let’s Encrypt для доменного имени с подстановочными знаками «*.nodekite.com» с использованием проверки DNS CloudFlare, запустите команду cerbot следующим образом:

$ судо сертификатбот --dns-cloudflare --dns-cloudflare-credentials ~ / .секреты / сертификатбот / Cloudflare.ini * .nodekite.com

Чтобы создать SSL-сертификат Let’s Encrypt для доменных имен «nodekite.com» и «www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows»:

$ судо сертификатбот --dns-cloudflare --dns-cloudflare-credentials ~ / .секреты / сертификатбот / Cloudflare.ini www.nodekite.com nodekite.com

Если изменения DNS занимают много времени для распространения на популярные DNS-серверы имен по всему миру, вы можете использовать опцию Certbot «-dns-cloudflare-propagation-секунды», чтобы установить количество секунд, в течение которых Certbot должен ждать перед проверкой DNS. выполняется.

$ судо сертификатбот --dns-cloudflare --dns-cloudflare-credentials ~ / .секреты / сертификатбот / Cloudflare.ini --dns-cloudflare-propagation-секунды 60 * .nodekite.com

После запуска команды Certbot вам будет предложено ввести свой адрес электронной почты. Введите свой адрес электронной почты и нажмите <Ввод> продолжать.

Нажмите «Y», а затем нажмите <Ввод> принять «Условия обслуживания» Let’s Encrypt.

  Скриншот компьютера. Описание создается автоматически.

Нажмите «Y», а затем нажмите <Ввод> .

  Снимок экрана компьютерной программы. Описание создается автоматически.

Выдается SSL-сертификат Let’s Encrypt. Это займет некоторое время.

  Скриншот ошибки компьютера. Описание создается автоматически.

На этом этапе выдается SSL-сертификат Let’s Encrypt. Должен отображаться полный путь, по которому сохраняются файлы сертификатов SSL. Также должна отображаться дата истечения срока действия SSL-сертификата.

  Скриншот компьютера. Описание создается автоматически.

Листинг SSL-сертификатов Let’s Encrypt с помощью Certbot

Вы можете перечислить все SSL-сертификаты Let’s Encrypt, созданные вами с помощью Certbot, с помощью следующей команды:

$ судо сертификаты ботов

Как видите, в списке указан сгенерированный SSL-сертификат Let’s Encrypt для домена «nodekite.com». [1] . Для сайта «nodekite.com» выдан подстановочный SSL-сертификат. [2] доменное имя. Срок действия сертификата — 20 марта 2024 г. (действителен 89 дней). [3] . Здесь также указаны путь к сертификату и секретному ключу. [4] .

  Скриншот компьютера. Описание создается автоматически.

Certbot хранит все сертификаты SSL, которые вы создали для своих доменов, в каталоге «/etc/letsencrypt/live» в соответствующей папке.

$ судо лс -Рлх / и т. д. / Letsencrypt / жить /

  Скриншот компьютера. Описание создается автоматически.

Обновление SSL-сертификатов Let’s Encrypt с помощью Certbot

Certbot автоматически обновляет все SSL-сертификаты Let’s Encrypt, которые вы создали с помощью проверки DNS CloudFlare.

Чтобы проверить, работает ли функция автоматического продления SSL-сертификатов Let’s Encrypt, выполните следующую команду:

$ судо сертификатбот продлить --пробный прогон

Действие автоматического продления моделируется для каждого из сгенерированных вами SSL-сертификатов Let’s Encrypt.

  Скриншот компьютера. Описание создается автоматически.

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

  Скриншот компьютера. Описание создается автоматически.

Чтобы функция автоматического продления Certbot работала, системный таймер «cerbot.timer» должен быть включен и активен на вашем компьютере/сервере.

Вы можете проверить, включен ли системный таймер «cerbot.timer» и активен, с помощью следующей команды:

$ судо статус systemctl certbot.timer

Как видите, системный таймер «certbot.timer» включен (автоматически запускается во время загрузки). [1] и активный [2] . Certbot проверяет, есть ли необходимость продлить какой-либо SSL-сертификат всего через 11 минут (согласно следующему снимку экрана) и обновляет SSL-сертификаты, срок действия которых скоро истечет. [3] .

  Скриншот компьютера. Описание создается автоматически.

Чтобы вручную проверить, истекает ли срок действия какого-либо сертификата SSL, и обновить истекающие сертификаты SSL, выполните следующую команду:

$ судо сертификатбот продлить

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

Чтобы заставить Certbot обновить SSL-сертификат определенного домена (скажем, *.nodekite.com), выполните следующую команду:

$ судо сертификатбот --force-обновить * .nodekite.com

Нажмите «1» и нажмите <Ввод> чтобы выбрать первый вариант (для проверки DNS с использованием CloudFlare DNS).

  Скриншот компьютера. Описание создается автоматически.

Сертификат SSL следует обновить.

Заключение

Чтобы получить SSL-сертификат Let’s Encrypt с использованием проверки DNS CloudFlare с помощью Certbot, вам необходим доступ к токену API CloudFlare. В этой статье мы показали вам, как создать токен API CloudFlare для вашего домена и безопасно сохранить его на своем компьютере/сервере, чтобы при необходимости вы могли получить к нему доступ с помощью Certbot. Мы также показали вам, как установить Certbot и DNS-плагин Certbot CloudFlare в наиболее популярных дистрибутивах Linux. Мы показали вам, как генерировать SSL-сертификаты Let’s Encrypt с подстановочными знаками, а также сертификаты SSL для отдельных доменов с использованием проверки DNS Certbot и CloudFlare. Наконец, мы показали вам, как обновить SSL-сертификаты Let’s Encrypt с помощью Certbot автоматически и вручную.

Использованная литература: