Jak uzyskać certyfikaty SSL szyfrujące za pomocą walidacji DNS Certbot CloudFlare

Jak Uzyskac Certyfikaty Ssl Szyfrujace Za Pomoca Walidacji Dns Certbot Cloudflare



Certbot jest klientem ACME dla urzędu certyfikacji Let’s Encrypt (CA). Służy do generowania certyfikatu Let’s Encrypt SSL i jego automatycznego odnawiania. Domyślnie Certbot wykorzystuje wyzwanie Let’s Encrypt HTTP-01 w celu sprawdzenia własności domeny i wystawienia certyfikatu SSL dla domeny. Ale wyzwanie HTTP-01 nie zadziała, jeśli nie masz publicznego adresu IP, a Twój komputer jest dostępny z Internetu. Jeśli więc chcesz używać certyfikatów Let's Encrypt SSL w swojej sieci domowej lub prywatnej, musisz zamiast tego użyć wyzwania DNS-01. Gdy używane jest wyzwanie DNS-01, Let’s Encrypt weryfikuje własność domeny za pomocą serwera DNS domeny. Działa więc również w sieciach prywatnych.

Aby uzyskać szczegółowe wyjaśnienie, jak działa wyzwanie Let's Encrypt DNS-01 (lub sprawdzanie poprawności DNS), przeczytaj artykuł zatytułowany Czym jest wyzwanie Let's Encrypt DNS-01 i jak go używać do zdobywania certyfikatów SSL.

W tym artykule pokażemy Ci, jak wykorzystać weryfikację Let’s Encrypt DNS, aby uzyskać certyfikat SSL dla swojej nazwy domeny za pomocą wtyczki Certbot i Certbot CloudFlare DNS.







Temat treści:

  1. Zarządzanie domeną za pomocą CloudFlare DNS
  2. Instalowanie wtyczki Certbot i Certbot CloudFlare na Ubuntu/Debian
  3. Instalowanie wtyczki Certbot i Certbot CloudFlare w Fedorze
  4. Instalowanie wtyczki Certbot i Certbot CloudFlare w strumieniu RHEL/AlmaLinux/Rocky Linux/CentOS
  5. Sprawdzanie, czy Certbot i wtyczka Certbot CloudFlare są poprawnie zainstalowane
  6. Generowanie tokena API CloudFlare
  7. Bezpieczne przechowywanie tokena API CloudFlare na komputerze/serwerze
  8. Generowanie certyfikatu SSL za pomocą walidacji DNS Certbot CloudFlare
  9. Lista certyfikatów Let's Encrypt SSL za pomocą Certbota
  10. Odnawianie certyfikatów Let’s Encrypt SSL za pomocą Certbota
  11. Wniosek
  12. Bibliografia

Zarządzanie domeną za pomocą CloudFlare DNS

Aby uzyskać certyfikat Let’s Encrypt SSL przy użyciu walidacji DNS CloudFlare, musisz mieć konto CloudFlare, a Twoja domena musi korzystać z CloudFlare DNS. Możesz utwórz konto CloudFlare za darmo a korzystanie z usługi CloudFlare DNS jest również bezpłatne.



Aby zarządzać swoją domeną za pomocą CloudFlare DNS, możesz wykonać jedną z następujących czynności:



  • Zarejestruj swoją domenę w CloudFlare
  • Przenieś swoją domenę do CloudFlare
  • Zmień serwer nazw DNS swojej nazwy domeny na serwer nazw DNS CloudFlare z panelu rejestratora domeny

Nie musisz kupować domeny od CloudFlare ani przenosić domeny do CloudFlare, aby zarządzać nią za pomocą usługi CloudFlare DNS. Możesz po prostu zmienić serwer nazw swojej domeny na serwer nazw DNS CloudFlare z poziomu panelu rejestratora domeny (u którego kupiłeś domenę) i zarządzać swoją domeną z CloudFlare. Aby uzyskać więcej informacji na temat zmiany serwera nazw swojej domeny na serwer nazw DNS CloudFlare, przeczytaj ten artykuł.





Instalowanie wtyczki Certbot i Certbot CloudFlare na Ubuntu/Debian

Wtyczka Certbot i Certbot CloudFlare są dostępne w oficjalnym repozytorium pakietów Ubuntu/Debian. Możesz więc bardzo łatwo zainstalować je na Ubuntu/Debianie.

Najpierw zaktualizuj pamięć podręczną repozytorium pakietów APT za pomocą następującego polecenia:



$ sudo trafna aktualizacja

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Aby zainstalować wtyczkę Certbot i Certbot CloudFlare DNS, uruchom następującą komendę:

$ sudo trafny zainstalować certbot python3-certbot-dns-cloudflare

Aby potwierdzić instalację, naciśnij „Y”, a następnie naciśnij .

Trwa instalowanie wtyczki Certbot i Certbot CloudFlare DNS. Ukończenie zajmuje trochę czasu.

W tym momencie należy zainstalować wtyczkę Certbot i Certbot CloudFlare DNS.

Instalowanie wtyczki Certbot i Certbot CloudFlare w Fedorze

Wtyczka Certbot i Certbot CloudFlare są dostępne w oficjalnym repozytorium pakietów Fedory i można je bardzo łatwo zainstalować w Fedorze.

Najpierw zaktualizuj bazę danych pakietów DNF za pomocą następującego polecenia:

$ sudo pamięć podręczna dnf

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Aby zainstalować wtyczkę Certbot i Certbot CloudFlare DNS w Fedorze, uruchom następujące polecenie:

$ sudo dnf zainstalować certbot python3-certbot-dns-cloudflare

Aby potwierdzić instalację, naciśnij „Y”, a następnie naciśnij .

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Trwa instalowanie wtyczki Certbot i Certbot CloudFlare DNS. Ukończenie zajmuje trochę czasu.

  Zrzut ekranu programu komputerowego. Opis wygenerowany automatycznie

W tym momencie należy zainstalować wtyczkę Certbot i Certbot CloudFlare DNS w Fedorze.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Instalowanie wtyczki Certbot i Certbot CloudFlare w strumieniu RHEL/AlmaLinux/Rocky Linux/CentOS

Wtyczka Certbot CloudFlare DNS nie jest dostępna w oficjalnych repozytoriach pakietów RHEL/AlmaLinux/Rocky Linux/CentOS Stream. Wtyczka Certbot CloudFlare DNS dostępna jest w repozytorium pakietów EPEL. Możesz włączyć repozytorium pakietów EPEL na RHEL/AlmaLinux/Rocky Linux/CentOS Stream i zainstalować stamtąd wtyczkę Certbot CloudFlare DNS.

Po włączeniu repozytorium pakietów EPEL zaktualizuj pamięć podręczną bazy danych DNF za pomocą następującego polecenia:

$ sudo pamięć podręczna dnf

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Następnie zainstaluj wtyczkę Certbot i Certbot CloudFlare DNS w systemie RHEL/AlmaLinux/Rocky Linux/CentOS Stream za pomocą następującego polecenia:

$ sudo dnf zainstalować certbot python3-certbot-dns-cloudflare

Aby potwierdzić instalację, naciśnij „Y”, a następnie naciśnij .

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Trwa instalowanie wtyczki Certbot i Certbot CloudFlare DNS. Ukończenie zajmuje trochę czasu.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Aby zaakceptować klucz GPG repozytorium EPEL, naciśnij „T”, a następnie naciśnij .

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

W tym momencie należy zainstalować wtyczkę Certbot i Certbot CloudFlare DNS.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Sprawdzanie, czy Certbot i wtyczka Certbot CloudFlare są poprawnie zainstalowane

Aby sprawdzić, czy na Twoim komputerze jest zainstalowany Certbot, uruchom następującą komendę:

$ certyfikatbot --wersja

Jeżeli Certbot jest zainstalowany, polecenie powinno wydrukować numer wersji zainstalowanego Certbota na Twoim komputerze.

Jak widać, na naszym komputerze z Debianem mamy zainstalowany Certbot 2.1.0.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Aby sprawdzić, czy na Twoim komputerze jest zainstalowana wtyczka Certbot CloudFlare DNS, uruchom następującą komendę:

$ sudo wtyczki certbota

Jeśli zainstalowana jest wtyczka Certbot CloudFlare DNS, na liście wtyczek powinieneś znaleźć opcję „dns-cloudflare”, jak zaznaczono na poniższym zrzucie ekranu:

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Generowanie tokena API CloudFlare

Aby zweryfikować własność domeny, Certbot musi dodać rekord TXT w domenie zarządzanej przez serwer DNS CloudFlare. W tym celu Certbot potrzebuje dostępu do tokena CloudFlare API. Możesz utworzyć token API dla swojej domeny z poziomu panelu CloudFlare.

Najpierw zaloguj się na swoje konto CloudFlare. Następnie kliknij ikonę swojego profilu

> Mój profil z prawego górnego rogu strony.

Przejdź do sekcji „Tokeny API”. [1] i kliknij „Utwórz token” [2] .

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Kliknij „Użyj szablonu” w sekcji „Edytuj DNS strefy”.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

W sekcji „Pozwolenie” zezwól na uprawnienie „Edycja” do „Strefy DNS”, wybierając zaznaczone opcje z menu rozwijanych.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Jeśli zarządzasz wieloma domenami za pomocą CloudFlare, możesz zezwolić na modyfikację „Określonej strefy” w sekcji „Zasób strefy”. Zezwolenie tokenowi API na modyfikowanie tylko jednej strefy jest bezpieczniejsze niż zezwolenie tokenowi API na modyfikowanie wszystkich stref. Dzieje się tak dlatego, że jeśli token API zostanie naruszony, powierzchnia ataku będzie mniejsza i wyrządzone zostaną mniejsze szkody.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Jeśli chcesz używać jednego klucza API do modyfikowania wszystkich domen zarządzanych przez CloudFlare, wybierz „Wszystkie strefy” w sekcji „Zasób strefy”.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Po zakończeniu konfiguracji tokena API kliknij „Kontynuuj podsumowanie”.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Wyświetlone zostanie podsumowanie działań, które możesz wykonać w domenach zarządzanych przez CloudFlare za pomocą tokena API. Kliknij „Utwórz token”.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Należy utworzyć token API. Skopiuj token API w bezpieczne miejsce, aby go nie zgubić. Gdy opuścisz tę stronę, nie będziesz mógł ponownie znaleźć tego tokena API. Musisz wygenerować nowy token API na wypadek jego utraty:

LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Bezpieczne przechowywanie tokena API CloudFlare na komputerze/serwerze

Certbot musi użyć tokena API CloudFlare, aby dodać nowy rekord TXT dla Twojej domeny na serwerze DNS CloudFlare. Musisz więc przechowywać token API CloudFlare na swoim komputerze/serwerze. Przechowywanie tokena API bez zapewnienia odpowiednich uprawnień dostępu do plików może umożliwić innym programom/użytkownikom dostęp do tokena API. Nie tego chcesz ze względów bezpieczeństwa. W tej sekcji pokażemy, jak bezpiecznie przechowywać token CloudFlare API w systemie plików.

Najpierw utwórz katalog (tj. ~/.secrets/certbot), w którym chcesz przechowywać klucz API CloudFlare, w następujący sposób:

$ mkdir -pw ~ / .tajniki / certyfikatbot

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Utwórz plik „cloudflare.ini” w nowo utworzonym katalogu (tj. ~/.secrets/certbot) i otwórz go w swoim ulubionym edytorze tekstu (np. nano) w następujący sposób:

$ nano ~ / .tajniki / certyfikatbot / cloudflare.ini

Wpisz następujący wiersz w pliku „cloudflare.ini” i naciśnij + X następnie „Y” i aby go zapisać (jeśli używasz edytora tekstu nano).

dns_cloudflare_api_token = < twój-cloudflare-api-token >

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Aby zapewnić odpowiednie uprawnienia dostępu do pliku „cloudflare.ini”, uruchom następujące polecenia, aby upewnić się, że tylko użytkownik root ma dostęp do odczytu i zapisu pliku:

$ sudo chowane korzeń:korzeń ~ / .tajniki / certyfikatbot / cloudflare.ini

$ sudo chmod 06:00~ / .tajniki / certyfikatbot / cloudflare.ini

Jak widać, tylko użytkownik root ma uprawnienia do odczytu i zapisu pliku „cloudflare.ini”.

$ ls -lh ~ / .tajniki / certyfikatbot / cloudflare.ini

Inni użytkownicy próbujący odczytać plik „cloudflare.ini” otrzymają komunikat o błędzie „Odmowa uprawnień”.

$ kot ~ / .tajniki / certyfikatbot / cloudflare.ini

  Zrzut ekranu komputera. Opis wygenerowany automatycznie

Generowanie certyfikatu SSL za pomocą walidacji DNS Certbot CloudFlare

Aby wygenerować certyfikat Let’s Encrypt SSL dla nazwy domeny z symbolem wieloznacznym „*.nodekite.com” przy użyciu sprawdzania poprawności DNS CloudFlare, uruchom komendę cerbot w następujący sposób:

$ sudo certbot z pewnością --dns-cloudflare --dns-cloudflare-poświadczenia ~ / .tajniki / certyfikatbot / cloudflare.ini -D * .nodekite.com

Aby wygenerować certyfikat Let’s Encrypt SSL dla nazw domen „nodekite.com” i „www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows:

$ sudo certbot z pewnością --dns-cloudflare --dns-cloudflare-poświadczenia ~ / .tajniki / certyfikatbot / cloudflare.ini -D www.nodekite.com -D nodekite.com

Jeśli propagacja zmian DNS do popularnych serwerów nazw DNS na całym świecie zajmuje dużo czasu, możesz użyć opcji „–dns-cloudflare-propagation-sekundy” Certbota, aby ustawić liczbę sekund, przez które Certbot ma czekać przed sprawdzeniem DNS jest wykonywane.

$ sudo certbot z pewnością --dns-cloudflare --dns-cloudflare-poświadczenia ~ / .tajniki / certyfikatbot / cloudflare.ini --dns-cloudflare-propagation-sekundy 60 -D * .nodekite.com

Po uruchomieniu polecenia Certbot zostaniesz poproszony o wpisanie adresu e-mail. Wpisz swój adres e-mail i naciśnij kontynuować.

Naciśnij „Y”, a następnie naciśnij zaakceptować „Warunki korzystania z usługi” Let’s Encrypt.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Naciśnij „Y”, a następnie naciśnij .

  Zrzut ekranu programu komputerowego. Opis wygenerowany automatycznie

Wydawany jest certyfikat Let’s Encrypt SSL. Ukończenie zajmuje trochę czasu.

  Zrzut ekranu błędu komputera. Opis wygenerowany automatycznie

W tym momencie wystawiany jest certyfikat Let’s Encrypt SSL. Powinna zostać wyświetlona pełna ścieżka, w której zapisane są pliki certyfikatów SSL. Powinna być także wyświetlona data ważności certyfikatu SSL.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Lista certyfikatów Let's Encrypt SSL za pomocą Certbota

Możesz wyświetlić listę wszystkich certyfikatów Let’s Encrypt SSL, które wygenerowałeś za pomocą Certbota, za pomocą następującego polecenia:

$ sudo certyfikaty certbota

Jak widać, na liście znajduje się wygenerowany certyfikat Let’s Encrypt SSL dla domeny „nodekite.com”. [1] . Dla witryny „nodekite.com” wydawany jest certyfikat SSL typu wildcard [2] Nazwa domeny. Data ważności certyfikatu to 2024-03-20 (ważny 89 dni) [3] . Tutaj wymieniona jest także ścieżka certyfikatu i klucza prywatnego [4] .

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Certbot przechowuje wszystkie certyfikaty SSL, które wygenerowałeś dla swoich domen w katalogu „/etc/letsencrypt/live” w odpowiednim folderze.

$ sudo ls -Rh / itp / letsencrypt / na żywo /

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Odnawianie certyfikatów Let’s Encrypt SSL za pomocą Certbota

Certbot automatycznie odnawia wszystkie certyfikaty Let’s Encrypt SSL, które wygenerowałeś przy użyciu walidacji DNS CloudFlare.

Aby sprawdzić, czy działa funkcja automatycznego odnawiania certyfikatów Let’s Encrypt SSL, uruchom następującą komendę:

$ sudo odnowienie certyfikatu bota --próba

Akcja automatycznego odnawiania jest symulowana dla każdego wygenerowanego przez Ciebie certyfikatu Let’s Encrypt SSL.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Jeśli testy wypadną pomyślnie, otrzymasz gratulacje. Pomyślny wynik testu oznacza, że ​​certyfikaty SSL zostaną automatycznie odnowione przed ich wygaśnięciem. Nie będziesz musiał robić nic więcej.

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Aby funkcja automatycznego odnawiania Certbot działała, zegar systemowy „cerbot.timer” musi być włączony i aktywny na Twoim komputerze/serwerze.

Możesz sprawdzić, czy zegar systemowy „cerbot.timer” jest włączony i aktywny za pomocą następującego polecenia:

$ sudo status systemctl certbot.timer

Jak widać, zegar systemowy „certbot.timer” jest włączony (uruchamia się automatycznie podczas uruchamiania) [1] i aktywny [2] . Certbot już po 11 minutach (zgodnie z poniższym zrzutem ekranu) sprawdza, czy istnieje potrzeba odnowienia dowolnego certyfikatu SSL (zgodnie z poniższym zrzutem ekranu) i odnawia certyfikaty SSL, które wkrótce wygasną [3] .

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Aby ręcznie sprawdzić, czy którykolwiek certyfikat SSL wkrótce wygaśnie i odnowić wygasające certyfikaty SSL, uruchom następującą komendę:

$ sudo odnowienie certyfikatu bota

W naszym przypadku żaden certyfikat SSL nie wygaśnie. Zatem Certbot nie podjął próby odnowienia żadnego certyfikatu SSL.

Aby zmusić Certbota do odnowienia certyfikatu SSL określonej domeny (powiedzmy *.nodekite.com), uruchom następującą komendę:

$ sudo certbot z pewnością --wymuś odnowienie -D * .nodekite.com

Naciśnij „1” i naciśnij aby wybrać pierwszą opcję (w celu sprawdzenia poprawności DNS przy użyciu CloudFlare DNS).

  Zrzut ekranu przedstawiający automatycznie wygenerowany opis komputera

Certyfikat SSL powinien zostać odnowiony.

Wniosek

Aby uzyskać certyfikat Let’s Encrypt SSL za pomocą walidacji DNS CloudFlare przy użyciu Certbota, potrzebujesz dostępu do tokena API CloudFlare. W tym artykule pokazaliśmy, jak utworzyć token API CloudFlare dla swojej domeny i bezpiecznie przechowywać go na komputerze/serwerze, aby w razie potrzeby móc uzyskać do niego dostęp za pomocą Certbota. Pokazaliśmy również, jak zainstalować Certbota i wtyczkę Certbot CloudFlare DNS na najpopularniejszych dystrybucjach Linuksa. Pokazaliśmy, jak wygenerować certyfikaty SSL typu Wildcard Let’s Encrypt oraz certyfikaty SSL dla pojedynczych domen przy użyciu walidacji DNS Certbot i CloudFlare. Na koniec pokazaliśmy, jak automatycznie i ręcznie odnawiać certyfikaty Let’s Encrypt SSL za pomocą Certbota.

Bibliografia: