ACME
Protokol ACME (Automatic Certificate Management Environment) je otevřený internetový standard, který umožňuje plně automatizovat vydávání, obnovu a odvolání SSL certifikátů. Díky ACME mohou webové servery samy žádat o certifikáty a automaticky je obnovovat bez ručního zásahu administrátora. Implementace ACME klientů automatizuje a výrazně zjednodušuje správu certifikátů v době, kdy nové standardy nastavují postupné zkracování platnosti SSL/TLS certifikátů na max. 47 dnů v roce 2029.
Obsah článku
- Co je to ACME protokol?
- Jak ACME funguje?
- Typy ACME výzev (challenges)
- ACME klienti – přehled nástrojů
Co je to ACME protokol?
ACME je protokol definovaný v dokumentu RFC 8555 (vydaném v roce 2019), který standardizuje komunikaci mezi klientem (webovým serverem nebo nástrojem pro správu certifikátů) a certifikační autoritou (CA). Původně ho navrhla a zpopularizovala certifikační autorita Let's Encrypt, která prostřednictvím ACME vydává bezplatné DV certifikáty.
Protokol funguje na principu challenge – response: klient prokáže certifikační autoritě (CA), že skutečně ovládá doménu, pro kterou žádá certifikát. Po úspěšném ověření CA certifikát automaticky vystaví. Celý proces trvá velmi krátkou dobu.
Zkratka ACME znamená Automatic Certificate Management Environment – tedy „prostředí pro automatickou správu certifikátů".
Jak ACME funguje?
Komunikace mezi ACME klientem a certifikační autoritou (CA) probíhá výhradně přes HTTPS REST API. Klient i CA si vyměňují zprávy ve formátu JSON. Celý průběh lze shrnout do následujících kroků.
- Registrace účtu – ACME klient si na straně CA vygeneruje a zaregistruje nový účet prostřednictvím páru kryptografických klíčů (privátní + veřejný klíč). Účet slouží k podepisování všech dalších požadavků.
- Žádost o certifikát (Order) – Klient zašle CA seznam domén, pro které certifikát požaduje. CA vrátí seznam výzev (challenges), které musí klient splnit pro každou doménu.
- Splnění výzvy (Challenge) – Klient zvolí jeden z nabízených typů výzev (HTTP-01, DNS-01, TLS-ALPN-01) a provede požadovanou akci – umístí token na server nebo nastaví DNS záznam.
- Ověření ze strany CA – CA automaticky ověří, zda výzva byla splněna (navštíví URL, ověří DNS záznam apod.). Úspěšné ověření potvrdí autorizaci domény.
- Vystavení certifikátu – Klient odešle žádost o certifikát (CSR). CA certifikát podepíše a zašle zpět klientovi ve formátu PEM.
- Automatická obnova – ACME klient si v konfiguraci nastaví pravidelnou obnovu. Certifikát se typicky obnovuje dostatečně včas před vypršením platnosti aby nedošlo k výpadku HTTPS.
Typy ACME výzev (challenges)
Aby certifikační autorita (CA) mohla ověřit, že žadatel skutečně ovládá doménu, nabízí ACME protokol tři standardizované typy výzev:
HTTP-01
ACME klient umístí speciální soubor (token) na webový server do adresáře /.well-known/acme-challenge/. CA pak ověří jeho dostupnost přes HTTP na portu 80. Toto je nejpoužívanější způsob ověření.
Omezení: Nefunguje pro WildCard certifikáty. Doména musí být veřejně dostupná na portu 80.
DNS-01
Klient vytvoří v DNS doménovém záznamu speciální TXT záznam ve tvaru _acme-challenge.domenaxyz.cz s unikátním tokenem od CA. CA záznam ověří přes DNS. Ověření, které umožňuje získat WildCard certifikát.
Omezení: Vyžaduje přístup k DNS záznamům domény. Může být pomalejší kvůli propagaci DNS změn.
TLS-ALPN-01
Ověření probíhá přes TLS na portu 443 pomocí rozšíření ALPN (Application-Layer Protocol Negotiation). Klient dočasně zpřístupní speciální certifikát s ACME tokenem.
Omezení: Může být komplikované pro některé hostingové prostředí.
ACME klienti – přehled nástrojů
Pro práci s ACME protokolem existuje celá řada hotových nástrojů.
Certbot
Nejpopulárnější ACME klient od EFF.org. Automatická integrace s Apache a Nginx. Podpora pro Linux a macOS. Certbot je široce používaný a dobře dokumentovaný nástroj, který nabízí jednoduché příkazy pro získání a obnovu certifikátů. Má také rozsáhlou podporu pro různé webové servery a hostingové prostředí.
acme.sh
Minimalistický ACME klient napsaný v shellu s podporou přes 150 DNS providerů. Linux, macOS, FreeBSD. acme.sh se zaměřuje na jednoduchost a širokou kompatibilitu.
win-acme
ACME klient pro Windows s integrací do IIS. Podpora GUI i příkazové řádky. win-acme je ideální pro správu certifikátů na Windows serverech, zejména s IIS.
Lego
ACME klient napsaný v Go. Vhodný pro vlastní integraci a skriptování. Lego je flexibilní ACME klient, který lze snadno integrovat do vlastních systémů a skriptů díky své implementaci v jazyce Go.
Kam dál?
Zpět na Nápovědu
Našli jste chybu nebo něčemu nerozumíte? Napište nám!
