Przejdz do tresci
Avanet

Tworzenie certyfikatu wildcard Let's Encrypt

Certyfikat wildcard Let’s Encrypt jest przydatny, gdy kilka subdomen ma być chronionych jednym certyfikatem, na przykład app.example.com, vpn.example.com i portal.example.com. Takie rozwiązanie może być praktyczne w przypadku Sophos ZTNA, reverse proxy, środowisk testowych lub kilku wewnętrznych usług WWW.

Ważne jest właściwe założenie: certyfikaty Let’s Encrypt mają krótki okres ważności. Ich zaletą nie jest długa ważność, lecz bezpłatne wystawianie i możliwość automatyzacji. Jeśli certyfikat jest tworzony ręcznie za pomocą rekordu DNS TXT, późniejsze odnawianie trzeba świadomie zaplanować.

Brama Sophos ZTNA wymaga certyfikatu wildcard. Sophos Central może wygenerować ten certyfikat, a następnie nim zarządzać i go odnawiać. Można też utworzyć go za pomocą Certbot zgodnie z opisem w tym artykule i przesłać jako własny certyfikat. Jeżeli certyfikat ma być tworzony bezpośrednio na Sophos Firewall dla WAF, WebAdmin lub portali, zwykle lepszy jest mechanizm wbudowany w firewall: Konfiguracja certyfikatów Let’s Encrypt na Sophos Firewall.

Kiedy certyfikat wildcard ma sens

Certyfikat wildcard obejmuje jeden poziom poniżej domeny. *.example.com obejmuje więc portal.example.com, ale nie obejmuje automatycznie example.com ani a.b.example.com.

  • Wiele subdomen w tej samej strefie: Certyfikat wildcard może uprościć administrację.
  • Tylko jedna usługa publiczna: Certyfikat dla jednego konkretnego FQDN jest często czytelniejszy.
  • Certyfikat będzie używany na kilku systemach: Certyfikat wildcard może być praktyczny, ale dystrybucja klucza prywatnego musi być ściśle kontrolowana.
  • Wymagane jest w pełni automatyczne odnawianie: Należy zaplanować dostawcę DNS z pluginem Certbot lub innego klienta ACME.
  • Sophos Firewall ma chronić tylko WAF, WebAdmin lub portale: Warto sprawdzić wbudowany w firewall mechanizm Let’s Encrypt.

Certyfikat wildcard nie jest sam w sobie bezpieczniejszy. Jeżeli ten sam klucz prywatny znajduje się na kilku systemach, rośnie wpływ jego przejęcia. Trzeba więc udokumentować, na jakich systemach certyfikat został zaimportowany i kto odpowiada za klucz prywatny.

Wymagania

Do utworzenia certyfikatu wildcard potrzebne są:

  • własna domena lub delegowana strefa subdomeny
  • w przypadku Sophos Central — uprawnienie do utworzenia i zmiany wymaganego rekordu CNAME w DNS
  • w przypadku ręcznej metody Certbot — uprawnienie do tworzenia i zmiany rekordów DNS TXT domeny
  • w przypadku metody ręcznej — serwer Linux lub stacja administracyjna z Certbot
  • w przypadku metody ręcznej — uprawnienia do uruchomienia Certbot z prawami root
  • plan odnawiania, importu i przechowywania klucza odpowiedni do wybranej metody
  • dostęp do systemu docelowego, na przykład Sophos ZTNA w Sophos Fusion, reverse proxy lub firewalla

Certyfikaty wildcard są weryfikowane przez wyzwanie DNS-01. W ręcznej metodzie Certbot ustawia się w tym celu rekord TXT pod adresem _acme-challenge.example.com. W zarządzanej metodzie Sophos Central rekord CNAME deleguje tę weryfikację do Sophos. Dokumentacja Let’s Encrypt dotycząca typów wyzwań opisuje podstawowe typy wyzwań.

Dla Sophos ZTNA: tworzenie certyfikatu w Sophos Central

W przypadku bramy ZTNA zarządzana metoda w Sophos Central jest zwykle prostsza niż ręczna procedura Certbot: Sophos generuje certyfikat Let’s Encrypt, a następnie przejmuje zarządzanie nim i jego odnawianie. Trzeba znać domenę używaną przez bramę i mieć dostęp do jej dostawcy DNS.

Jeśli strefa DNS używa rekordów CAA, Let’s Encrypt musi być w nich dopuszczony jako uprawniony urząd certyfikacji. W przeciwnym razie Let’s Encrypt nie może wystawić certyfikatu mimo prawidłowej weryfikacji domeny.

  1. W Sophos Central otworzyć Moje produkty > ZTNA i kliknąć Ustawienia.
  2. Otworzyć Domeny i certyfikaty i kliknąć Dodaj domenę. Sophos pozwala dodać maksymalnie 100 domen. Wprowadzić domenę w formacie example.com i ją dodać.
  3. Sophos wygeneruje wartość CNAME dla tej domeny. Utworzyć ją u dostawcy DNS pod adresem _acme-challenge.example.com. Zastąpić example.com własną domeną bramy.
  4. Wrócić do Domeny i certyfikaty, kliknąć Weryfikuj i potwierdzić utworzenie rekordu CNAME. W ten sposób Sophos sprawdza kontrolę nad domeną.
  5. Po pomyślnej weryfikacji kliknąć Generuj certyfikat LE, przeczytać i zaakceptować Umowę subskrybenta Let’s Encrypt oraz rozpocząć generowanie. Według Sophos trwa ono około 60 sekund; w tym czasie można opuścić stronę.

⚠️ Jeśli pod adresem _acme-challenge.example.com istnieje już rekord TXT, trzeba go usunąć, aby użyć rekordu CNAME wymaganego przez Sophos. Najpierw należy sprawdzić, czy inna aplikacja nie potrzebuje tego rekordu TXT. Rekord CNAME musi następnie pozostać w DNS.

W przypadku domen już istniejących w Sophos Central procedura zależy od stanu weryfikacji:

  • Domena jest już zweryfikowana za pomocą rekordu DNS TXT:
    1. W obszarze Moje produkty > ZTNA > Ustawienia > Domeny i certyfikaty kliknąć Generuj certyfikat LE.
    2. W sekcji Dodaj CNAME skopiować rekord CNAME i utworzyć go u dostawcy DNS pod adresem _acme-challenge.example.com.
    3. Usunąć istniejący tam rekord TXT dopiero po przeprowadzeniu opisanej wyżej oceny wpływu.
    4. Potwierdzić utworzenie rekordu CNAME.
    5. Zaakceptować Umowę subskrybenta Let’s Encrypt i kliknąć Kontynuuj.
    6. Dokończyć generowanie certyfikatu i sprawdzić w obszarze Domeny i certyfikaty, czy domena oraz jej rekord CNAME są wyświetlane w nowym formacie.
  • Domena nie została jeszcze zweryfikowana: Usunąć istniejącą domenę, dodać ją ponownie za pomocą Dodaj domenę, zweryfikować za pomocą Weryfikuj, a następnie ponownie utworzyć certyfikat Let’s Encrypt za pomocą Generuj certyfikat LE.

Sophos generuje tylko jeden certyfikat Let’s Encrypt na konto Central. Zawiera on wszystkie zweryfikowane domeny. Jeśli później zostanie zweryfikowana kolejna domena, certyfikat trzeba wygenerować ponownie, aby ją uwzględnić.

Aby powiązać certyfikat z istniejącą bramą, otworzyć Moje produkty > ZTNA > Bramy, wybrać bramę i w sekcji Domena i certyfikat ustawić opcję Automatycznie (Let’s Encrypt). Zapisać zmianę, a następnie sprawdzić na bramie ważność certyfikatu i datę jego wygaśnięcia. Jeśli weryfikacja lub generowanie nie zakończyły się jeszcze pomyślnie, nie przełączać bramy na nowy certyfikat, lecz najpierw sprawdzić rekord CNAME u autorytatywnego dostawcy DNS.

Instalacja Certbot

Strona projektu Certbot zaleca instalację przez Snap w wielu środowiskach Linux. Na odpowiednim systemie Linux podstawowa procedura wygląda następująco:

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot

Jeżeli Certbot został już zainstalowany przez apt, dnf lub inny menedżer pakietów, najpierw trzeba sprawdzić, który plik wykonywalny jest rzeczywiście używany. Równoległe metody instalacji mogą w przeciwnym razie prowadzić do użycia nieoczekiwanej wersji lub innych zadań odnawiania niż zaplanowano.

Ręczne tworzenie certyfikatu wildcard

Do ręcznej weryfikacji DNS uruchamia się Certbot z opcjami --manual i --preferred-challenges dns. W tym przykładzie certyfikat ma obejmować zarówno example.com, jak i *.example.com:

sudo certbot certonly --manual --preferred-challenges dns -d example.com -d '*.example.com'

Certbot wyświetla następnie jedną lub kilka wartości TXT. Gdy example.com i *.example.com są zamawiane jednocześnie, powstają dwa oddzielne wyzwania DNS-01. Obie wartości trzeba dodać jako osobne rekordy TXT pod _acme-challenge.example.com. Drugi rekord należy dodać bez nadpisywania pierwszego.

Przed kontynuowaniem w Certbot co najmniej autorytatywne serwery nazw domeny i zewnętrzny resolver powinny zwracać oczekiwane wartości TXT. Jeden resolver stanowi tylko wskazówkę, ponieważ dostawcy DNS mogą rozpropagowywać zmiany z różną szybkością zależnie od lokalizacji.

Praktyczna kontrola:

dig TXT _acme-challenge.example.com @1.1.1.1

Autorytatywne serwery nazw można znaleźć poleceniem dig NS example.com. Następnie ten sam rekord TXT można sprawdzić bezpośrednio na jednym z tych serwerów. Po pomyślnej weryfikacji należy usunąć niepotrzebne już wartości TXT wyzwania. Stare wartości utrudniają późniejsze kontrole, a przy dużej liczbie rekordów niepotrzebnie zwiększają odpowiedź DNS.

  • certonly: Uzyskanie lub odnowienie certyfikatu bez jego instalowania.
  • --manual: Ręczne ustawienie wartości DNS.
  • --preferred-challenges dns: Użycie wyzwania DNS-01.
  • -d example.com: Dodanie domeny głównej.
  • -d '*.example.com': Dodanie domeny wildcard.

Domena główna i domena wildcard są odrębnymi nazwami. Jeżeli zamówiono tylko *.example.com, domena example.com nie zostanie dodana automatycznie. Przy jednoczesnym zamawianiu obu nazw może być potrzebnych kilka rekordów TXT o tej samej nazwie. DNS to obsługuje, a weryfikacja często kończy się niepowodzeniem właśnie dlatego, że istniejąca wartość TXT została przypadkowo nadpisana.

Lokalizowanie plików certyfikatu

Certbot pokazuje rzeczywistą nazwę certyfikatu, objęte domeny, datę wygaśnięcia i ścieżki plików za pomocą tego polecenia tylko do odczytu:

sudo certbot certificates

Po pomyślnym wystawieniu pliki znajdują się zwykle w katalogu:

/etc/letsencrypt/live/example.com/

Ważne pliki:

  • fullchain.pem: Certyfikat wraz z certyfikatami pośrednimi.
  • cert.pem: Tylko certyfikat serwera.
  • privkey.pem: Klucz prywatny.
  • chain.pem: Certyfikaty pośrednie.

Wiele systemów docelowych wymaga plików fullchain.pem i privkey.pem. Niektóre formularze importu oczekują osobno certyfikatu i klucza, a inne wymagają również łańcucha. Przed importem trzeba ustalić, jakiego formatu oczekuje system docelowy.

⚠️ privkey.pem jest kluczem prywatnym. Ten plik nie może trafić do zgłoszeń, czatów, poczty elektronicznej ani niezabezpieczonych repozytoriów. Każdy, kto uzyska klucz prywatny, może nadużyć certyfikatu.

Planowanie odnowienia

Ręczna metoda z --manual jest prosta podczas testów i jednorazowych operacji, ale tylko częściowo nadaje się do certyfikatów produkcyjnych. Bez automatyzacji przy każdym odnowieniu trzeba ustawić nową wartość DNS TXT.

W środowisku produkcyjnym dostępne są trzy rozsądne opcje:

  • Plugin DNS dla dostawcy: Odpowiedni, gdy Certbot może aktualizować rekordy DNS przez API.
  • Inny klient ACME z automatyzacją DNS: Odpowiedni, gdy dostawca lub platforma ma lepszą obsługę w innym kliencie.
  • Ręczne odnowienie z wyznaczonym właścicielem i przypomnieniem: Odpowiednie tylko do testów lub rzadko używanych certyfikatów.

Dane dostępowe do API DNS są szczególnie wrażliwe. Token DNS powinien być ograniczony do wymaganej strefy i, jeśli to możliwe, do potrzebnych typów rekordów. Poświadczenia z szerokimi prawami administratora domeny nie powinny być przechowywane bez zabezpieczenia na serwerze WWW.

Odnowienie testuje się zwykle poleceniem:

sudo certbot renew --dry-run

W przypadku certyfikatów utworzonych przez ręczną weryfikację DNS ten test ma znaczenie tylko wtedy, gdy proces DNS jest zautomatyzowany lub ręczne hooki działają prawidłowo.

Pomyślne odnowienie na systemie Certbot nie aktualizuje automatycznie certyfikatu wcześniej zaimportowanego do Sophos Firewall, ZTNA lub reverse proxy. Potrzebny jest udokumentowany ponowny import albo przetestowany proces wdrożenia uruchamiany dopiero po pomyślnym odnowieniu. Po każdym wdrożeniu należy sprawdzić nazwy, łańcuch i nową datę wygaśnięcia bezpośrednio na systemie docelowym.

Import do środowisk Sophos

Przed importem certyfikatu do Sophos ZTNA, firewalla, reverse proxy lub innego systemu związanego z Sophos trzeba sprawdzić:

  • Czy nazwa certyfikatu odpowiada publicznej nazwie hosta?
  • Czy oprócz wildcard potrzebna jest również domena główna?
  • Czy system docelowy oczekuje fullchain.pem, czy osobnych składników certyfikatu?
  • Czy akceptuje klucz prywatny, czy trzeba go przekonwertować do innego formatu?
  • Czy istnieje udokumentowana procedura kolejnego odnowienia?
  • Czy wiadomo, na jakich systemach zaimportowano ten sam certyfikat?

W przypadku Sophos ZTNA certyfikat utworzony za pomocą Certbot przypisuje się do bramy w Sophos Central: otworzyć Moje produkty > ZTNA > Bramy, kliknąć nazwę bramy i w sekcji Domena i certyfikat wybrać Prześlij własny certyfikat. Przesłać wygenerowany certyfikat i kliknąć Zapisz. Następnie sprawdzić na bramie ważność i datę wygaśnięcia; certyfikat, który wkrótce wygaśnie, trzeba odnowić, ponownie przesłać i ponownie sprawdzić na bramie.

Jeżeli certyfikat jest potrzebny tylko dla WAF, WebAdmin lub portali na Sophos Firewall, wbudowany proces jest często prostszy, ponieważ wystawianie i odnawianie odbywa się bezpośrednio na firewallu. W przypadku zewnętrznie zarządzanych certyfikatów wildcard nadal istotna jest metoda Certbot lub ACME. Artykuł Importowanie i przypisywanie certyfikatów na Sophos Firewall wyjaśnia następnie, jak sprawdzić klucz prywatny, łańcuch CA i przypisanie do usługi.

Typowe błędy

  • Weryfikacja kończy się niepowodzeniem: Rekord TXT nie jest jeszcze widoczny, nazwa strefy DNS jest nieprawidłowa albo nadpisano jedną z kilku wartości TXT. Sprawdzić poleceniem dig TXT _acme-challenge.example.com @1.1.1.1.
  • Certyfikat nie obejmuje example.com: Zamówiono tylko *.example.com. Dodać domenę główną opcją -d example.com.
  • Certyfikat nie obejmuje a.b.example.com: Wildcard obejmuje tylko jeden poziom subdomeny. Zaplanować osobny certyfikat lub odpowiedni wildcard dla głębszej strefy.
  • Odnowienie nie uruchamia się automatycznie: Ręczna metoda DNS nie jest zautomatyzowana. Sprawdzić odpowiedni plugin DNS lub innego klienta ACME.
  • Certbot odnowił certyfikat, ale system docelowy nadal prezentuje stary: Nie wykonano ponownego importu lub procesu wdrożenia. Sprawdzić numer seryjny lub datę wygaśnięcia bezpośrednio na systemie docelowym.
  • Import kończy się niepowodzeniem: Plik lub format jest nieprawidłowy. Porównać wymagania dotyczące fullchain.pem, cert.pem, privkey.pem i łańcucha certyfikatów.
  • Kopie klucza tworzą ryzyko bezpieczeństwa: Klucz prywatny znajduje się na kilku systemach. Udokumentować miejsca przechowywania, uprawnienia dostępu i punkty importu.

Lista kontrolna

  • Zdefiniowana domena i wymagany poziom subdomeny.
  • Świadomie wybrane domena główna i wildcard.
  • Dla Sophos Central: dostęp do DNS i uprawnienie do wymaganego rekordu CNAME.
  • Dla ręcznej metody Certbot: dostęp do DNS i uprawnienie do rekordów TXT.
  • Świadomie wybrana metoda wystawienia przez Sophos Central lub zewnętrznego klienta ACME.
  • Certbot prawidłowo zainstalowany dla metody ręcznej.
  • Pomyślnie sprawdzona weryfikacja domeny przez CNAME Sophos lub ręczne wyzwanie DNS-01.
  • Dla metody zewnętrznej pliki certyfikatu i klucz prywatny bezpiecznie przechowywane.
  • Dla metody zewnętrznej znany system docelowy i wymagany format importu.
  • Odnowienie zaplanowane przez Sophos Central lub z właścicielem, kalendarzem bądź automatyzacją DNS.
  • Dla metody zewnętrznej przetestowany ponowny import lub proces wdrożenia do systemu docelowego.
  • Stare certyfikaty i klucze usunięte w kontrolowany sposób po udanej migracji.

Często zadawane pytania

Czy certyfikat wildcard obejmuje domenę główną?

Nie. *.example.com nie obejmuje automatycznie example.com. Jeśli potrzebne są obie nazwy, obie muszą znaleźć się w certyfikacie.

Dlaczego certyfikat wildcard wymaga weryfikacji DNS?

Let’s Encrypt weryfikuje certyfikaty wildcard za pomocą DNS-01. Pozwala to potwierdzić kontrolę nad strefą DNS domeny.

Czy ręcznie utworzony certyfikat wildcard może odnawiać się automatycznie?

Tylko wtedy, gdy krok DNS jest zautomatyzowany. Zwykle wymaga to pluginu dostawcy DNS lub klienta ACME z dostępem API do dostawcy.

Jakie pliki są potrzebne do importu?

Najczęściej potrzebne są fullchain.pem i privkey.pem. W zależności od systemu docelowego mogą być również wymagane cert.pem lub chain.pem.

Czy certyfikat wildcard jest bezpieczniejszy niż osobne certyfikaty?

Nie z definicji. Certyfikat wildcard upraszcza administrację, ale jego klucz prywatny chroni kilka nazw hostów. Dlatego klucz wymaga szczególnie starannego przechowywania i kontroli dostępu.