ACME
Protokol ACME (Automatic Certificate Management Environment) je otvorený internetový štandard, ktorý umožňuje plne automatizované vydávanie, obnovu a zrušenie SSL certifikátov. Vďaka ACME si webové servery môžu certifikáty vyžiadať samy a automaticky ich obnovovať bez ručného zásahu administrátora. Implementácie ACME klientov automatizujú a výrazne zjednodušujú správu certifikátov v čase, keď nové štandardy postupne skracujú platnosť SSL/TLS certifikátov na maximálne 47 dní do roku 2029.
Obsah článku
Skryť obsah článkuČo je protokol ACME?
ACME je protokol definovaný v RFC 8555 (publikovaný v roku 2019), ktorý štandardizuje komunikáciu medzi klientom (webovým serverom alebo nástrojom na správu certifikátov) a certifikačnou autoritou (CA). Pôvodne ho navrhla a spopularizovala certifikačná autorita Let's Encrypt, ktorá cez ACME vydáva bezplatné DV certifikáty.
Protokol funguje na princípe výzva – odpoveď: klient certifikačnej autorite (CA) preukáže, že skutočne ovláda doménu, pre ktorú certifikát žiada. Po úspešnom overení CA certifikát automaticky vydá. Celý proces trvá veľmi krátko.
Skratka ACME znamená Automatic Certificate Management Environment.
Ako ACME funguje?
Komunikácia medzi ACME klientom a certifikačnou autoritou (CA) prebieha výhradne cez HTTP REST API. Klient a CA si vymieňajú správy vo formáte JSON. Celý proces možno zhrnúť do nasledujúcich krokov.
- Aktivácia účtu – ACME klient sa pripojí k CA pomocou EAB prihlasovacích údajov (external account binding). Odošle Key identifier (KID) a HMAC kľúč.
- Žiadosť o certifikát (Order) – Klient odošle CA zoznam domén, pre ktoré žiada certifikát. CA vráti zoznam výziev, ktoré musí klient splniť pre každú doménu.
- Splnenie výzvy (Challenge) – Klient si zvolí jeden z ponúkaných typov výziev (HTTP-01, DNS-01, TLS-ALPN-01) a vykoná požadovanú akciu – umiestni token na server alebo nastaví DNS záznam.
- Overenie zo strany CA – CA automaticky overí, či bola výzva splnená (navštívi URL, overí DNS záznam a pod.). Úspešné overenie potvrdí autorizáciu domény.
- Vydanie certifikátu – Klient odošle žiadosť o certifikát (CSR). CA certifikát podpíše a odošle ho späť klientovi vo formáte PEM.
- Automatická obnova – ACME klient si vo svojej konfigurácii nastaví pravidelnú obnovu. Certifikát sa zvyčajne obnovuje dostatočne pred vypršaním platnosti, aby sa predišlo výpadku HTTPS.
Typy ACME výziev
Aby certifikačná autorita (CA) overila, že žiadateľ skutočne ovláda doménu, protokol ACME ponúka tri štandardizované typy výziev:
HTTP-01
ACME klient umiestni na webový server špeciálny súbor (token) do adresára /.well-known/acme-challenge/. CA potom overí jeho dostupnosť cez HTTP na porte 80. Ide o najčastejšie používanú metódu overenia.
Obmedzenia: Nefunguje pre WildCard certifikáty. Doména musí byť verejne dostupná na porte 80.
DNS-01
Klient vytvorí v DNS domény špeciálny TXT záznam v tvare _acme-challenge.domenaxyz.cz s jedinečným tokenom od CA. CA záznam overí cez DNS. Táto metóda overenia umožňuje získať WildCard certifikát.
Obmedzenia: Vyžaduje prístup k DNS záznamom domény. Môže byť pomalšia kvôli propagácii DNS zmien.
TLS-ALPN-01
Overenie prebieha cez TLS na porte 443 pomocou rozšírenia ALPN (Application-Layer Protocol Negotiation). Klient dočasne sprístupní špeciálny certifikát s ACME tokenom.
Obmedzenia: Pre niektoré hostingové prostredia môže byť komplikované.
ACME klienti – prehľad nástrojov
Na prácu s protokolom ACME existuje široká škála hotových nástrojov.
Certbot
Najpopulárnejší ACME klient od EFF.org. Automatická integrácia s Apache a Nginx. Podpora pre Linux a macOS. Certbot je široko používaný a dobre zdokumentovaný nástroj, ktorý ponúka jednoduché príkazy na získanie a obnovu certifikátov. Má tiež rozsiahlu podporu pre rôzne webové servery a hostingové prostredia.
acme.sh
Minimalistický ACME klient napísaný v shelli s podporou viac ako 150 DNS poskytovateľov. Linux, macOS, FreeBSD. acme.sh sa zameriava na jednoduchosť a širokú kompatibilitu.
win-acme
ACME klient pre Windows s integráciou IIS. Podporuje GUI aj príkazový riadok. win-acme je ideálny na správu certifikátov na Windows serveroch, najmä s IIS.
Lego
ACME klient napísaný v jazyku Go. Vhodný na vlastnú integráciu a skriptovanie. Lego je flexibilný ACME klient, ktorý možno vďaka implementácii v jazyku Go ľahko integrovať do vlastných systémov a skriptov.
Kam ďalej?
Späť na Nápovedu
Našli ste chybu alebo niečomu nerozumiete? Napíšte nám!
