За подробно обяснение как работи предизвикателството Let’s Encrypt DNS-01 (или валидирането на DNS), прочетете статията, озаглавена Какво представлява предизвикателството Let’s Encrypt DNS-01 и как да го използвате, за да получите SSL сертификати.
В тази статия ще ви покажем как да използвате валидирането на Let’s Encrypt DNS, за да получите SSL сертификат за името на вашия домейн с помощта на приставката Certbot и Certbot CloudFlare DNS.
Тема на съдържанието:
- Управление на вашия домейн с CloudFlare DNS
- Инсталиране на Certbot и Certbot CloudFlare Plugin на Ubuntu/Debian
- Инсталиране на Certbot и приставката Certbot CloudFlare на Fedora
- Инсталиране на Certbot и Certbot CloudFlare Plugin на RHEL/AlmaLinux/Rocky Linux/CentOS Stream
- Проверка дали Certbot и приставката Certbot CloudFlare са инсталирани правилно
- Генериране на CloudFlare API Token
- Сигурно съхраняване на CloudFlare API Token на компютъра/сървъра
- Генериране на SSL сертификат с помощта на Certbot CloudFlare DNS валидиране
- Изброяване на Let’s Encrypt SSL сертификати с помощта на Certbot
- Подновяване на Let’s Encrypt SSL сертификати с помощта на Certbot
- Заключение
- Препратки
Управление на вашия домейн с CloudFlare DNS
За да получите Let’s Encrypt SSL сертификат, използвайки CloudFlare DNS валидиране, трябва да имате CloudFlare акаунт и вашият домейн трябва да използва CloudFlare DNS. Можеш създайте акаунт в CloudFlare безплатно и DNS услугата CloudFlare също е безплатна за използване.
За да управлявате вашия домейн с CloudFlare DNS, можете да направите едно от следните неща:
- Регистрирайте своя домейн от CloudFlare
- Прехвърлете вашия домейн към CloudFlare
- Променете DNS сървъра за имена на вашето име на домейн на DNS сървъра за имена на CloudFlare от таблото за управление на вашия регистратор на домейни
Не е нужно да купувате домейн от CloudFlare или да прехвърляте домейн към CloudFlare, за да го управлявате с CloudFlare DNS услугата. Можете просто да промените сървъра за имена на вашия домейн на DNS сървъра за имена на CloudFlare от таблото за управление на регистратора на вашия домейн (откъдето сте закупили домейна) и да управлявате домейна си от CloudFlare. За повече информация относно промяната на сървъра за имена на вашия домейн към CloudFlare DNS сървър за имена, прочетете тази статия.
Инсталиране на Certbot и Certbot CloudFlare Plugin на Ubuntu/Debian
Плъгинът Certbot и Certbot CloudFlare са налични в официалното хранилище на пакети на Ubuntu/Debian. Така че можете да ги инсталирате на Ubuntu/Debian много лесно.
Първо актуализирайте кеша на хранилището на APT пакети със следната команда:
$ sudo подходяща актуализация
За да инсталирате Certbot и Certbot CloudFlare DNS плъгин, изпълнете следната команда:
$ sudo ап Инсталирай certbot python3-certbot-dns-cloudflare За да потвърдите инсталацията, натиснете “Y” и след това натиснете
Certbot и Certbot CloudFlare DNS плъгин се инсталират. Отнема известно време, за да завършите.
На този етап Certbot и Certbot CloudFlare DNS плъгин трябва да бъдат инсталирани.
Инсталиране на Certbot и приставката Certbot CloudFlare на Fedora
Плъгинът Certbot и Certbot CloudFlare са налични в официалното хранилище на пакети на Fedora и могат да бъдат инсталирани на Fedora много лесно.
Първо актуализирайте базата данни на DNF пакета със следната команда:
$ sudo dnf makecache
За да инсталирате Certbot и Certbot CloudFlare DNS плъгин на Fedora, изпълнете следната команда:
$ sudo dnf Инсталирай certbot python3-certbot-dns-cloudflare За да потвърдите инсталацията, натиснете “Y” и след това натиснете
Certbot и Certbot CloudFlare DNS плъгин се инсталират. Отнема известно време, за да завършите.
В този момент приставката Certbot и Certbot CloudFlare DNS трябва да бъдат инсталирани на Fedora.
Инсталиране на Certbot и Certbot CloudFlare Plugin на RHEL/AlmaLinux/Rocky Linux/CentOS Stream
DNS плъгинът Certbot CloudFlare не е наличен в официалните хранилища на пакети на RHEL/AlmaLinux/Rocky Linux/CentOS Stream. DNS плъгинът Certbot CloudFlare е наличен в хранилището на пакети EPEL. Можете да активирате хранилището на пакети EPEL на RHEL/AlmaLinux/Rocky Linux/CentOS Stream и да инсталирате приставката Certbot CloudFlare DNS от там.
След като активирате хранилището на пакети EPEL, актуализирайте кеша на DNF базата данни със следната команда:
$ sudo dnf makecache
След това инсталирайте Certbot и Certbot CloudFlare DNS плъгин на вашата система RHEL/AlmaLinux/Rocky Linux/CentOS Stream със следната команда:
$ sudo dnf Инсталирай certbot python3-certbot-dns-cloudflare За да потвърдите инсталацията, натиснете “Y” и след това натиснете
Certbot и Certbot CloudFlare DNS плъгин се инсталират. Отнема известно време, за да завършите.
За да приемете GPG ключа на хранилището на EPEL, натиснете “Y” и след това натиснете
На този етап Certbot и Certbot CloudFlare DNS плъгин трябва да бъдат инсталирани.
Проверка дали Certbot и приставката Certbot CloudFlare са инсталирани правилно
За да проверите дали Certbot е инсталиран на вашия компютър, изпълнете следната команда:
$ certbot --версияАко Certbot е инсталиран, командата трябва да отпечата номера на версията на инсталирания Certbot на вашия компютър.
Както можете да видите, имаме инсталиран Certbot 2.1.0 на нашата Debian машина.
За да проверите дали приставката Certbot CloudFlare DNS е инсталирана на вашия компютър, изпълнете следната команда:
$ sudo certbot добавкиАко приставката Certbot CloudFlare DNS е инсталирана, трябва да намерите „dns-cloudflare“ в списъка с приставки, както е отбелязано на следната екранна снимка:
Генериране на CloudFlare API Token
За да потвърди собствеността върху домейна, Certbot трябва да добави TXT запис към домейна, който се управлява от CloudFlare DNS сървъра. За целта Certbot се нуждае от достъп до CloudFlare API токена. Можете да създадете API токен за вашия домейн от таблото за управление на CloudFlare.
Първо влезте във вашия акаунт в CloudFlare. След това щракнете върху иконата на вашия профил
> Моят профил от горния десен ъгъл на страницата.
Отидете до секцията „API Tokens“. [1] и щракнете върху „Създаване на токен“ [2] .
Кликнете върху „Използване на шаблон“ от секцията „Редактиране на DNS на зоната“.
От секцията „Разрешение“ разрешете разрешението „Редактиране“ на „DNS зона“, като изберете маркираните опции от падащите менюта.
Ако управлявате множество домейни с CloudFlare, можете да разрешите промяната на „Конкретна зона“ от секцията „Ресурс на зона“. Разрешаването на API токен да променя само една зона е по-сигурно от разрешаването на API токена да променя всички зони. Това е така, защото ако API токенът е компрометиран, повърхността за атака ще бъде по-малка и ще бъдат нанесени по-малко щети.
Ако искате да използвате един API ключ, за да модифицирате всичките си домейни, управлявани от CloudFlare, изберете „Всички зони“ от секцията „Ресурс на зона“.
След като приключите с конфигурирането на вашия API токен, щракнете върху „Продължи към обобщението“.
Ще се покаже обобщение на действията, които можете да извършите във вашите домейни, управлявани от CloudFlare, с API токена. Кликнете върху „Създаване на токен“.
Трябва да се създаде API токен. Копирайте API токена някъде на сигурно място, за да не го загубите. След като напуснете тази страница, няма да можете да намерите този API токен отново. Трябва да генерирате нов API токен, в случай че го загубите:
LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5
Сигурно съхраняване на CloudFlare API Token на компютъра/сървъра
Certbot трябва да използва токена на CloudFlare API, за да добави нов TXT запис за вашия домейн в DNS сървъра на CloudFlare. Така че трябва да съхраните CloudFlare API токена на вашия компютър/сървър. Съхраняването на API токена без осигуряване на правилните разрешения за достъп до файлове може да позволи на другите програми/потребители достъп до API токена. Това не е това, което искате от съображения за сигурност. В този раздел ще ви покажем как сигурно да съхранявате CloudFlare API токена във файловата система.
Първо създайте директория (т.е. ~/.secrets/certbot), където искате да съхраните API ключа на CloudFlare, както следва:
$ mkdir -pv ~ / .тайни / certbot
Създайте файл „cloudflare.ini“ в новосъздадената директория (т.е. ~/.secrets/certbot) и го отворете с любимия си текстов редактор (т.е. nano), както следва:
$ нано ~ / .тайни / certbot / cloudflare.ini Въведете следния ред във файла “cloudflare.ini” и натиснете
За да осигурите правилно разрешение за достъп до файла „cloudflare.ini“, изпълнете следните команди, за да се уверите, че само root потребителят има достъп за четене и запис на файла:
$ sudo хапвам корен: корен ~ / .тайни / certbot / cloudflare.ini$ sudo chmod 0600 ~ / .тайни / certbot / cloudflare.ini
Както можете да видите, само root потребителят има права за четене и запис на файла „cloudflare.ini“.
$ ls -лч ~ / .тайни / certbot / cloudflare.ini
Други потребители, които се опитат да прочетат файла „cloudflare.ini“, ще получат съобщение за грешка „Разрешението е отказано“.
$ котка ~ / .тайни / certbot / cloudflare.ini
Генериране на SSL сертификат с помощта на Certbot CloudFlare DNS валидиране
За да генерирате Let’s Encrypt SSL сертификат за име на домейн със заместващ знак „*.nodekite.com“, като използвате CloudFlare DNS валидиране, изпълнете командата cerbot, както следва:
$ sudo certbot със сигурност --dns-cloudflare --dns-cloudflare-идентификационни данни ~ / .тайни / certbot / cloudflare.ini -д * .nodekite.comЗа да генерирате Let’s Encrypt SSL сертификат за имената на домейни „nodekite.com“ и „www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows:
$ sudo certbot със сигурност --dns-cloudflare --dns-cloudflare-идентификационни данни ~ / .тайни / certbot / cloudflare.ini -д www.nodekite.com -д nodekite.comАко промените в DNS отнемат много време, за да се разпространят до популярните DNS сървъри за имена по целия свят, можете да използвате опцията „–dns-cloudflare-propagation-seconds“ на Certbot, за да зададете броя секунди, които искате Certbot да изчака преди валидирането на DNS се извършва.
$ sudo certbot със сигурност --dns-cloudflare --dns-cloudflare-идентификационни данни ~ / .тайни / certbot / cloudflare.ini --dns-cloudflare-разпространение-секунди 60 -д * .nodekite.com След като изпълните командата Certbot, ще бъдете помолени да въведете своя имейл адрес. Въведете своя имейл адрес и натиснете
Натиснете “Y” и след това натиснете
Натиснете “Y” и след това натиснете
Издава се Let’s Encrypt SSL сертификат. Отнема известно време, за да завършите.
В този момент се издава SSL сертификатът Let’s Encrypt. Трябва да се покаже пълният път, където се записват файловете на SSL сертификата. Датата на изтичане на SSL сертификата също трябва да бъде показана.
Изброяване на Let’s Encrypt SSL сертификати с помощта на Certbot
Можете да изброите всички Let’s Encrypt SSL сертификати, които сте генерирали с помощта на Certbot със следната команда:
$ sudo certbot сертификатиКакто можете да видите, генерираният Let’s Encrypt SSL сертификат за домейна „nodekite.com“ е посочен [1] . SSL сертификат със заместващ знак се издава за „nodekite.com“ [2] име на домейн. Срокът на валидност на сертификата е 20.03.2024 (валиден 89 дни) [3] . Сертификатът и пътят на частния ключ също са посочени тук [4] .
Certbot съхранява всички SSL сертификати, които сте генерирали за вашите домейни в директорията „/etc/letsencrypt/live“ в съответната папка.
$ sudo ls -Rlh / и т.н / letsencrypt / на живо /
Подновяване на Let’s Encrypt SSL сертификати с помощта на Certbot
Certbot автоматично подновява всички Let’s Encrypt SSL сертификати, които сте генерирали с помощта на DNS валидирането на CloudFlare.
За да тествате дали функцията за автоматично подновяване на Let’s Encrypt SSL сертификатите работи, изпълнете следната команда:
$ sudo подновяване на certbot --суха тренировкаДействието за автоматично подновяване се симулира за всеки от Let’s Encrypt SSL сертификатите, които сте генерирали.
Ако тестовете са успешни, ще бъдете поздравени. Успешният тест означава, че SSL сертификатите ще бъдат автоматично подновени, преди да изтекат. Няма да се налага да правите нищо друго.
За да работи функцията за автоматично подновяване на Certbot, системният таймер „cerbot.timer“ трябва да е активиран и активен на вашия компютър/сървър.
Можете да проверите дали системният таймер “cerbot.timer” е активиран и активен със следната команда:
$ sudo systemctl статус certbot.timerКакто можете да видите, системният таймер „certbot.timer“ е активиран (автоматично стартира по време на зареждане) [1] и активен [2] . Certbot проверява дали има нужда от подновяване на SSL сертификат само след 11 минути (според следващата екранна снимка) и подновява SSL сертификатите, които са на път да изтекат [3] .
За да проверите ръчно дали някой SSL сертификат е на път да изтече и да подновите изтичащите SSL сертификати, изпълнете следната команда:
$ sudo подновяване на certbotВ нашия случай нито един SSL сертификат не изтича. Така че Certbot не се опита да поднови нито един SSL сертификат.
За да принудите Certbot да поднови SSL сертификата на конкретен домейн (да речем *.nodekite.com), изпълнете следната команда:
$ sudo certbot със сигурност --force-renew -д * .nodekite.com Натиснете “1” и натиснете
SSL сертификатът трябва да бъде подновен.
Заключение
За да получите Let’s Encrypt SSL сертификат с помощта на CloudFlare DNS валидиране с помощта на Certbot, имате нужда от достъп до CloudFlare API токена. В тази статия ви показахме как да създадете CloudFlare API токен за вашия домейн и да го съхранявате сигурно на вашия компютър/сървър, така че да имате достъп до него с Certbot, когато е необходимо. Също така ви показахме как да инсталирате Certbot и приставката Certbot CloudFlare DNS на най-популярните дистрибуции на Linux. Показахме ви как да генерирате Let’s Encrypt заместващи SSL сертификати, както и SSL сертификати за единични домейни, използвайки Certbot и CloudFlare DNS валидиране. Накрая ви показахме как да подновите SSL сертификатите Let’s Encrypt с помощта на Certbot автоматично и ръчно.