Подробное объяснение того, как работает задача Let’s Encrypt DNS-01 (или проверка DNS), прочитайте в статье «Что такое задача Let’s Encrypt DNS-01 и как ее использовать для получения SSL-сертификатов».
В этой статье мы покажем вам, как использовать проверку DNS Let’s Encrypt для получения сертификата SSL для вашего доменного имени с помощью плагина Certbot и Certbot CloudFlare DNS.
Тема содержания:
- Управление вашим доменом с помощью CloudFlare DNS
- Установка Certbot и плагина Certbot CloudFlare в Ubuntu/Debian
- Установка Certbot и плагина Certbot CloudFlare в Fedora
- Установка Certbot и плагина Certbot CloudFlare в RHEL/AlmaLinux/Rocky Linux/CentOS Stream
- Проверка правильности установки Certbot и плагина Certbot CloudFlare
- Генерация токена API CloudFlare
- Безопасное хранение токена CloudFlare API на компьютере/сервере
- Генерация сертификата SSL с использованием проверки DNS Certbot CloudFlare
- Листинг SSL-сертификатов Let’s Encrypt с помощью Certbot
- Обновление SSL-сертификатов Let’s Encrypt с помощью Certbot
- Заключение
- Рекомендации
Управление вашим доменом с помощью 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» и нажмите
Чтобы обеспечить правильное разрешение доступа к файлу «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 автоматически и вручную.