Automatyzacja Let's Encrypt i protokołu ACME
Proszę zautomatyzować wydawanie i odnawianie certyfikatów za pomocą protokołu ACME, narzędzia Certbot i innych klientów.
Automatyzacja Let's Encrypt i protokołu ACME to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.
Wprowadzenie do Let's Encrypt
Let's Encrypt to bezpłatny, zautomatyzowany i otwarty urząd certyfikacji prowadzony przez Internet Security Research Group (ISRG), uruchomiony w publicznej wersji beta w grudniu 2015 roku. Wydał już ponad 3 miliardy certyfikatów i znacznie zwiększył wykorzystanie HTTPS w całym internecie, eliminując koszty i złożoność uzyskiwania publicznie zaufanych certyfikatów TLS.
Przegląd protokołu ACME
Protokół Automated Certificate Management Environment (ACME), ustandaryzowany w 2019 roku jako RFC 8555, definiuje sposób, w jaki klienci automatycznie potwierdzają kontrolę nad domeną i otrzymują certyfikaty od urzędów certyfikacji. ACME zastępuje ręczne procesy weryfikacji domeny automatyczną wymianą weryfikowaną kryptograficznie, umożliwiając bezdotykowe zarządzanie cyklem życia certyfikatów.
Wyzwanie HTTP-01
Wyzwanie HTTP-01 weryfikuje kontrolę nad domeną, wymagając od klienta ACME umieszczenia pliku z określonym tokenem pod adresem "http://DOMAIN/.well-known/acme-challenge/TOKEN". Urząd certyfikacji pobiera ten adres URL, aby zweryfikować token. HTTP-01 jest proste we wdrożeniu, ale wymaga dostępności portu 80 i nie może być używane do certyfikatów wildcard.
Wyzwanie DNS-01
Wyzwanie DNS-01 weryfikuje kontrolę nad domeną, wymagając od klienta ACME utworzenia rekordu TXT DNS pod adresem "_acme-challenge.DOMAIN" z określoną wartością. Urząd certyfikacji odpytuje DNS, aby zweryfikować rekord. DNS-01 to jedyny typ wyzwania obsługujący wydawanie certyfikatów wildcard ("*.example.com"); działa również wtedy, gdy serwery WWW znajdują się za zaporami sieciowymi.
Wyzwanie TLS-ALPN-01
Wyzwanie TLS-ALPN-01 weryfikuje kontrolę nad domeną na poziomie TLS, używając niestandardowego identyfikatora protokołu ALPN "acme-tls/1". Klient ACME tymczasowo udostępnia na porcie 443 samopodpisany certyfikat zawierający token wyzwania w specjalnym rozszerzeniu. To wyzwanie działa bez uruchomionego serwera WWW i obsługuje środowiska z równoważeniem obciążenia.
Referencyjny klient Certbot
Certbot to referencyjny klient ACME organizacji Electronic Frontier Foundation dla Let's Encrypt. Automatyzuje cały cykl życia certyfikatu: weryfikację domeny, wydawanie certyfikatu i jego automatyczne odnawianie. Certbot zawiera wtyczki dla Apache i nginx, które automatycznie konfigurują ustawienia TLS. W nowoczesnych dystrybucjach systemu Linux można go zainstalować za pomocą polecenia "snap install --classic certbot".
Alternatywni klienci ACME
Oprócz Certbota istnieje wielu klientów ACME przeznaczonych do różnych zastosowań. acme.sh to klient ACME będący skryptem powłoki, często używany w lekkich środowiskach. Serwer WWW Caddy ma wbudowaną obsługę ACME i automatycznie odnawia certyfikaty. Traefik, używany w środowiskach kontenerowych, obsługuje ACME za pomocą konfiguracji certificatesResolvers na potrzeby obciążeń uruchamianych w kontenerach.
Automatyzacja odnawiania certyfikatów
Certyfikaty Let's Encrypt są celowo ważne przez 90 dni, co zachęca do automatyzacji i skraca czas narażenia na skutki przejęcia kluczy prywatnych. Certbot instaluje licznik systemd lub zadanie cron, które uruchamia "certbot renew" dwa razy dziennie i odnawia każdy certyfikat, któremu pozostało nie więcej niż 30 dni ważności. Ręczne odnawianie to antywzorzec prowadzący do przestojów.
Limity liczby żądań Let's Encrypt
Let's Encrypt stosuje limity liczby żądań, aby zapobiegać nadużyciom. Główne limity to 50 certyfikatów na zarejestrowaną domenę tygodniowo oraz 5 identycznych certyfikatów tygodniowo. Ograniczana jest również liczba nieudanych prób weryfikacji — 5 na nazwę hosta w ciągu godziny. Podczas tworzenia oprogramowania środowisko staging Let's Encrypt umożliwia nieograniczone wydawanie certyfikatów przez testowy urząd certyfikacji, któremu nie ufają publiczne przeglądarki.
Certyfikaty wielodomenowe i wildcard
Pojedynczy certyfikat ACME może obejmować wiele domen (Subject Alternative Names). Polecenie "certbot --domains example.com,www.example.com,api.example.com" wydaje certyfikat z trzema nazwami SAN. Certyfikaty wildcard ("*.example.com") wymagają weryfikacji DNS-01 i obejmują wszystkie jednopoziomowe subdomeny. Certyfikaty wildcard nie obejmują samej domeny głównej (example.com), dlatego wymagają dodania jej jako kolejnej nazwy SAN.
ACME w wewnętrznej infrastrukturze PKI
Protokół ACME nie jest ograniczony do Let's Encrypt. Wewnętrzne urzędy certyfikacji, takie jak Step-CA (smallstep), EJBCA i HashiCorp Vault, mogą udostępniać punkty końcowe ACME na potrzeby wewnętrznej automatyzacji certyfikatów. Umożliwia to zastosowanie tego samego zautomatyzowanego zarządzania cyklem życia certyfikatów, które stosuje się w usługach publicznych, do wewnętrznej infrastruktury mTLS i usług prywatnych.
Sprawdzenie wyzwań ACME
Jaki typ wyzwania ACME jest wymagany do wydania certyfikatu wildcard, takiego jak "*.example.com"?
Podsumowanie lekcji: Let's Encrypt i ACME
Let's Encrypt udostępnia bezpłatne certyfikaty za pośrednictwem protokołu ACME (RFC 8555). Wyzwania HTTP-01 działają dla certyfikatów innych niż wildcard na porcie 80. DNS-01 umożliwia uzyskiwanie certyfikatów wildcard dzięki potwierdzeniu kontroli nad strefą DNS. TLS-ALPN-01 działa bez serwera WWW. Certbot i acme.sh automatyzują cały cykl życia certyfikatu. Certyfikaty ważne przez 90 dni wymagają automatyzacji. Limity liczby żądań sprawiają, że podczas testów należy korzystać ze środowiska staging.
Często zadawane pytania
Czy lekcja „Automatyzacja Let's Encrypt i protokołu ACME” jest bezpłatna?
Tak — pełny tekst „Automatyzacja Let's Encrypt i protokołu ACME” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Automatyzacja Let's Encrypt i protokołu ACME”?
Proszę zautomatyzować wydawanie i odnawianie certyfikatów za pomocą protokołu ACME, narzędzia Certbot i innych klientów. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?
Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Automatyzacja Let's Encrypt i protokołu ACME”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?
Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy OpenSSL w wierszu poleceń
- Tworzenie i zarządzanie łańcuchami certyfikatów
- OCSP Stapling i Certificate Transparency
- Automatyzacja Let's Encrypt i protokołu ACME