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

Kak Da Polucite Let S Encrypt Ssl Sertifikati S Pomosta Na Certbot Cloudflare Dns Validirane



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

За подробно обяснение как работи предизвикателството Let’s Encrypt DNS-01 (или валидирането на DNS), прочетете статията, озаглавена Какво представлява предизвикателството Let’s Encrypt DNS-01 и как да го използвате, за да получите SSL сертификати.

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







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

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

Управление на вашия домейн с 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” и натиснете + х последвано от „Y“ и за да го запазите (ако използвате нано текстовия редактор).

dns_cloudflare_api_token = < your-cloudflare-api-токен >

  Екранна снимка на автоматично генерирано описание на компютъра

За да осигурите правилно разрешение за достъп до файла „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” и след това натиснете да приемете „Условията за ползване“ на Let’s Encrypt.

  Екранна снимка на автоматично генерирано описание на компютъра

Натиснете “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” и натиснете за да изберете първата опция (за DNS валидиране с помощта на CloudFlare DNS).

  Екранна снимка на автоматично генерирано описание на компютъра

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 автоматично и ръчно.

Препратки: