Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej
Czym jest _acme-challenge i dlaczego Cloudflare prosi o dodanie go do DNS
Niedawno podczas automatycznego przedłużania certyfikatu SSL, Cloudflare wysłał mi e-mail z prośbą o dodanie rekordu DNS _acme-challenge.
Na pierwszy rzut oka sytuacja wydawała się dziwna: Cloudflare już miał uniwersalny certyfikat SSL dla domeny, przy czym certyfikat obejmował zarówno główną domenę, jak i wildcard:
example.com
*.example.com
Jednak do kolejnego przedłużenia Cloudflare poprosił o ręczne dodanie rekordu TXT.
Rozważmy, co to jest i po co jest potrzebny. Ale najpierw sprawdziłem, czy to rzeczywiście był e-mail od Cloudflare, a nie jakiś podstępny sposób na kradzież domeny. Po weryfikacji - zabrałem się do rozwiązywania problemu z _acme-challenge.
ACME to protokół, za pomocą którego automatycznie uzyskuje się i przedłuża certyfikaty SSL/TLS. Używa go między innymi Let's Encrypt oraz inne centra certyfikacji.
Podczas weryfikacji należy udowodnić, że osoba lub usługa, która żąda certyfikatu, rzeczywiście kontroluje domenę.
Jednym ze sposobów, aby to zrobić, jest DNS-01 challenge.
W tym przypadku tworzy się rekord TXT o mniej więcej takim wyglądzie:
_acme-challenge.example.com
z określoną wartością:
y_DgjAHPWuxNmcyKLHhljRL-5e734ndz99rk_DLeSrF
Wartość jest generowana automatycznie i jest częścią konkretnej weryfikacji.
Jak przebiega weryfikacja
W uproszczonej formie proces wygląda tak:
Cloudflare / ACME
↓
generuje challenge
↓
potrzebny rekord TXT
↓
_acme-challenge.example.com
↓
DNS
↓
weryfikacja przez centrum certyfikacji
↓
certyfikat przedłużony
Centrum certyfikacji sprawdza DNS i szuka potrzebnego rekordu TXT.
Jeśli wartość zgadza się z oczekiwaną, kontrola nad domeną jest potwierdzona.
Dlaczego Cloudflare poprosił mnie o dodanie go ręcznie
W moim przypadku Cloudflare wysłał e-mail z informacją, że nie udało mu się automatycznie przeprowadzić weryfikacji.
Wśród możliwych przyczyn Cloudflare wymienił:
użycie częściowej konfiguracji DNS CNAME;
obecność certyfikatu wildcard;
domena przestała być rozwiązywana przez sieć Cloudflare;
niemożność Cloudflare samodzielnego dodania potrzebnego rekordu walidacyjnego.
Szczególnie ważny w moim przypadku był certyfikat wildcard.
W ustawieniach Edge Certificates widoczny był certyfikat dla:
example.com
*.example.com
To znaczy, że Cloudflare używał certyfikatu, który obejmował nie tylko samą domenę, ale także wszystkie jej subdomeny.
Dla certyfikatów wildcard używa się walidacji opartej na DNS.
Jaki rekord należy dodać
Cloudflare wysłał konkretny rekord TXT, który należało dodać do DNS.
Wygląda on mniej więcej tak:
Type: TXT
Name: _acme-challenge
Content: <unikalna wartość od Cloudflare>
W rezultacie pełna nazwa DNS będzie:
_acme-challenge.example.com
Ważne: nie należy tworzyć dla tego osobnego rekordu A lub CNAME, jeśli Cloudflare wyraźnie prosi o TXT.
Nie należy również wymyślać wartości TXT — należy użyć dokładnie tej, którą podał Cloudflare.
Dlaczego _acme-challenge zaczyna się od _
To jest służbowa nazwa DNS.
Podkreślenie (_) często używane jest dla specjalnych mechanizmów DNS, które nie są przeznaczone do zwykłego dostępu przez przeglądarkę.
Dlatego:
_acme-challenge.example.com
nie oznacza, że na stronie pojawiła się nowa subdomena.
To jest służbowy rekord, który jest używany do walidacji ACME.
Czy należy zostawić rekord TXT na zawsze?
Nie jest to konieczne.
Jeśli rekord został utworzony dla konkretnej jednorazowej weryfikacji, po jej zakończeniu może już nie być potrzebny.
Ale tutaj trzeba być ostrożnym.
Jeśli masz skonfigurowane automatyczne przedłużanie certyfikatów i używasz DNS-01, system może samodzielnie tworzyć i usuwać takie rekordy.
Dlatego nie należy po prostu usuwać wszystkich rekordów _acme-challenge, nie rozumiejąc, do czego są używane.
Dlaczego takich rekordów może być kilka
W DNS można zobaczyć kilka rekordów TXT dla jednego _acme-challenge.
Wiele rekordów walidacyjnych może istnieć, jeśli jednocześnie przeprowadzane są różne weryfikacje lub kilka certyfikatów używa jednej domeny.
Dlatego nie należy usuwać starych rekordów na chybił trafił.
A co z Universal SSL w Cloudflare?
To również może wprowadzać w błąd.
W Cloudflare w sekcji SSL/TLS → Edge Certificates można zobaczyć kilka certyfikatów jednocześnie.
Na przykład:
Universal SSL → Managed
Backup → Managed
Przy tym jeden certyfikat może mieć datę wygaśnięcia później niż inny.
Dlatego e-mail z prośbą o przeprowadzenie walidacji nie oznacza automatycznie, że bieżący HTTPS już przestał działać.
Cloudflare może przygotowywać lub przedłużać inny certyfikat w ramach swojego systemu zarządzania.
Co się stanie, jeśli nie dodam _acme-challenge
Jeśli Cloudflare nie będzie w stanie potwierdzić kontroli nad domeną i nie będzie mógł przedłużyć wymaganego certyfikatu przed upływem jego ważności, certyfikat może zostać usunięty z Cloudflare Edge.
W rezultacie użytkownicy mogą otrzymać błąd TLS/SSL podczas łączenia się ze stroną.
Dlatego takie e-maile od Cloudflare lepiej nie ignorować.
Co zrobiłem w swoim przypadku
Cloudflare wysłał mi rekord TXT dla _acme-challenge.
Dodano go do rekordów DNS Cloudflare. Ponieważ Namecheap (rejestrator domeny) odwołuje się do Cloudflare. Więc sprawa leży w konfiguracjach Cloudflare.
Ale pamiętaj, że nawet jeśli strona działa przez Cloudflare, nie zawsze oznacza to, że Cloudflare zarządza autorytatywnymi rekordami DNS.
Jeśli DNS jest u innego dostawcy, Cloudflare nie zawsze może samodzielnie utworzyć potrzebny _acme-challenge (lub jak w moim przypadku - nie mógł go utworzyć sam dla siebie).
Jego idea jest prosta: raz skonfigurować delegację _acme-challenge, po czym Cloudflare będzie mógł automatycznie umieszczać rekordy walidacyjne podczas kolejnych przedłużeń certyfikatu.
Inną opcją jest użycie pełnej konfiguracji DNS Cloudflare, gdy autorytatywne serwery nazw domeny wskazują na Cloudflare.
W takim przypadku Cloudflare ma pełną kontrolę nad DNS i może automatycznie tworzyć potrzebne rekordy walidacyjne. Podsumowując:
_acme-challenge to nie błąd i nie „lewy” subdomen.
To jest służbowy rekord DNS, który jest używany do walidacji ACME DNS-01 — potwierdzenia, że kontrolujesz domenę.
Jeśli Cloudflare prosi o dodanie:
_acme-challenge
jako rekordu TXT, oznacza to, że potrzebuje przeprowadzić weryfikację DNS w celu wydania lub przedłużenia certyfikatu SSL/TLS.
W moim przypadku objawiło się to podczas przedłużania Cloudflare Universal SSL, przy czym certyfikat obejmował wildcard *.<domena>. Dlatego kwestia walidacji DNS stała się szczególnie aktualna.