ACME
Protokol ACME (Automatic Certificate Management Environment) otvoreni je internetski standard koji omogućuje potpuno automatizirano izdavanje, obnavljanje i opoziv SSL certifikata. Zahvaljujući ACME-u, web poslužitelji mogu sami zatražiti certifikate i automatski ih obnavljati bez ručne intervencije administratora. Implementacije ACME klijenata automatiziraju i znatno pojednostavljuju upravljanje certifikatima u vrijeme kada novi standardi postupno skraćuju valjanost SSL/TLS certifikata na najviše 47 dana do 2029. godine.
Sadržaj članka
Sakrij sadržaj člankaŠto je ACME protokol?
ACME je protokol definiran u RFC 8555 (objavljen 2019.), koji standardizira komunikaciju između klijenta (web poslužitelja ili alata za upravljanje certifikatima) i certifikacijskog tijela (CA). Izvorno ga je osmislilo i popularizialo certifikacijsko tijelo Let's Encrypt, koje putem ACME-a izdaje besplatne DV certifikate.
Protokol radi na načelu challenge – response: klijent dokazuje certifikacijskom tijelu (CA) da stvarno kontrolira domenu za koju traži certifikat. Nakon uspješne provjere CA automatski izdaje certifikat. Cijeli postupak traje vrlo kratko.
Kratica ACME označava Automatic Certificate Management Environment.
Kako ACME funkcionira?
Komunikacija između ACME klijenta i certifikacijskog tijela (CA) odvija se isključivo putem HTTP REST API. Klijent i CA razmjenjuju poruke u JSON formatu. Cijeli se postupak može sažeti u sljedeće korake.
- Aktivacija računa – ACME klijent povezuje se s CA pomoću EAB vjerodajnica (external account binding). Šalje Key identifier (KID) i HMAC ključ.
- Zahtjev za certifikat (Order) – Klijent šalje CA popis domena za koje traži certifikat. CA vraća popis izazova koje klijent mora ispuniti za svaku domenu.
- Ispunjavanje izazova (Challenge) – Klijent bira jednu od ponuđenih vrsta izazova (HTTP-01, DNS-01, TLS-ALPN-01) i izvodi traženu radnju – postavlja token na poslužitelj ili postavlja DNS zapis.
- Provjera od strane CA – CA automatski provjerava je li izazov ispunjen (posjećuje URL, provjerava DNS zapis itd.). Uspješna provjera potvrđuje autorizaciju domene.
- Izdavanje certifikata – Klijent šalje zahtjev za certifikat (CSR). CA potpisuje certifikat i šalje ga natrag klijentu u PEM formatu.
- Automatsko obnavljanje – ACME klijent postavlja redovito obnavljanje u svojoj konfiguraciji. Certifikat se obično obnavlja dovoljno unaprijed prije isteka kako bi se spriječio prekid HTTPS-a.
Vrste ACME izazova
Kako bi certifikacijsko tijelo (CA) provjerilo da podnositelj zahtjeva stvarno kontrolira domenu, ACME protokol nudi tri standardizirane vrste izazova:
HTTP-01
ACME klijent postavlja posebnu datoteku (token) na web poslužitelj u direktorij /.well-known/acme-challenge/. CA zatim provjerava njezinu dostupnost putem HTTP-a na portu 80. Ovo je najčešće korištena metoda provjere.
Ograničenja: Ne radi za WildCard certifikate. Domena mora biti javno dostupna na portu 80.
DNS-01
Klijent stvara poseban TXT zapis u DNS-u domene u obliku _acme-challenge.domenaxyz.cz s jedinstvenim tokenom od CA. CA provjerava zapis putem DNS-a. Ova metoda provjere omogućuje dobivanje WildCard certifikata.
Ograničenja: Zahtijeva pristup DNS zapisima domene. Može biti sporija zbog propagacije DNS promjena.
TLS-ALPN-01
Provjera se odvija putem TLS-a na portu 443 pomoću proširenja ALPN (Application-Layer Protocol Negotiation). Klijent privremeno čini dostupnim poseban certifikat s ACME tokenom.
Ograničenja: Može biti složena za neka hosting okruženja.
ACME klijenti – pregled alata
Postoji širok raspon gotovih alata za rad s ACME protokolom.
Certbot
Najpopularniji ACME klijent tvrtke EFF.org. Automatska integracija s Apacheom i Nginxom. Podrška za Linux i macOS. Certbot je široko korišten i dobro dokumentiran alat koji nudi jednostavne naredbe za dobivanje i obnavljanje certifikata. Također ima opsežnu podršku za razne web poslužitelje i hosting okruženja.
acme.sh
Minimalistički ACME klijent napisan u shellu s podrškom za više od 150 DNS pružatelja. Linux, macOS, FreeBSD. acme.sh usredotočen je na jednostavnost i široku kompatibilnost.
win-acme
ACME klijent za Windows s IIS integracijom. Podržava i GUI i naredbeni redak. win-acme idealan je za upravljanje certifikatima na Windows poslužiteljima, osobito s IIS-om.
Lego
ACME klijent napisan u Go. Prikladan za prilagođenu integraciju i skriptiranje. Lego je fleksibilan ACME klijent koji se lako integrira u prilagođene sustave i skripte zahvaljujući implementaciji u jeziku Go.
Kamo dalje?
Povratak na pomoć
Našli ste grešku ili ne razumete nešto? Pišite nam!
