ACME protokolo naudojimas SSL sertifikatų užsakymui
Vienas iš SSL sertifikatų užsakymo automatizavimo būdų yra ACME (ang. The Automated Certificate Management Environment) protokolo panaudojimas. ACME protokolas automatizuoja sąveiką tarp žiniatinklio serverio ir sertifikavimo institucijos, įskaitant sertifikatų diegimą, atnaujinimą ir domeno patvirtinimą. Įdiegus šią SSL sertifikatų valdymo technologiją, SSL sertifikatai yra atnaujinami be žmogaus įsikišimo, todėl sumažėja rizika praleisti SSL galiojimo laiką, be to, įsigaliojus 90 dienų SSL sertifikatų galiojimui, palengvintų jų atnaujinimo procesą.
Žemiau pateikiama instrukcija kaip Sectigo SCM portale užsisakyti SSL sertifikatus ACME protokolu.
1. Kad galima būtų SSL sertifikatus užsisakyti ACME protokolu, organizacija ir jos valdomas/i domenas/ai turi atitikti tokius kriterijus:
- Sectigo portale organizacijos patikra įvykdyta ir yra galiojanti;
- Sectigo portale organizacijos domenas yra validuotas ir priskirtas organizacijai.
2. Jeigu organizacija ir jos domenas atitinka aukščiau išvardintus kriterijus, reikia sukurti ACME paskyrą, tai gali atlikti tik organizacijos įgaliotas administratorius (RAO). Paskyra yra sukuriama šoniniame meniu pasirinkus Enrollment > ACME, tada pažymėjus „https://acme.sectigo.com/v2/GEANTOV“ ir paspausdus „Accounts“ (Pav. 1).
Accounts lange paspausti „+“ (Create ACME Account), atsidariusiame "Create ACME Account" lange įvesti paskyros pavadinimą, pasirinkti savo organizaciją ir organizacijai priklausantį domeną ir išsaugoti (Pav. 2). Pasirinkus "Add all" bus pridėti visi organizacijos domenai, registruoti Sectigo SCM portale.
Pastaba: ACME paskyrą galima kurti atskiram ar keliems skirtingiems organizacijos domenams. Jei ACME paskyra bus naudojama nelabai patikimoje tarnybinėje stotyje, geriau nepridėkite į paskyrą visų subdomenų (*.domenas.lt), nes tokiu atveju bet kas su root teisėmis galės užsakyti sertifikatą/us bet kokiam organizacijos subdomenui. Institucijos SSL sertifikatų valdymui galima skirti dedikuotą, tinkamai apsaugotą tarnybinę stotį, kuri bus naudojama skaitmeninių sertifikatų užsakymui įvairioms sistemoms (ypač toms sistemoms, kuriose ACME protokolo niekaip negalima panaudoti). Tuo atveju SSL sertifikatų įkėlimui į sistemas galima naudoti SSH programą ar kitus būdus.
Sukūrus ACME paskyrą sukuriamas paskyros ID (Account ID), rakto ID (Key ID), HMAC raktas (HMAC key, Hash-Based Message Authentication Code key). Juos galima rasti pažymėjus sukurtą ACME paskyrą ir pasirinkus „Details“ opciją (Pav. 3).
Rakto ID (Key ID) ir HMAC raktas (HMAC key) yra pagrįsti atitinkamo išorinio paskyros susiejimo (External Account Binding – EAB) raktu ir veikia panašiai kaip vartotojo vardo ir slaptažodžio pora. Jie kartu su ACME URL reikalingi norint pasiekti Sectigo ACME paslaugą, SSL sertifikatų išdavimui. "ACME Account Details" lango apačioje taip pat pateikiamas Cerbot komandos, naudojamos užsakyti SSL sertifikatui, pavyzdys.
Priklausomai nuo ACME kliento, EAB raktas gali būti reikalingas, arba tik iš pradžių ACME registracijai, arba kaskart išduodant naują sertifikatą.
3. SSL sertifikato/ų užsakymui tarnybinėje stotyje reikia įdiegti Certbot programą (certbot.eff.org). Certbot leidžia registruoti, įdiegti ir valdyti SSL sertifikatus per ACME protokolą.
Certbot komandos pavyzdys:
certbot certonly --server https://acme.sectigo.com/v2/GEANTOV --eab-kid "KEY_ID" --eab-hmac-key "HMAC_KEY" \ --agree-tos --email Šis el.pašto adresas yra apsaugotas nuo šiukšlių. Jums reikia įgalinti JavaScript, kad peržiūrėti jį. --no-eff-email --manual -d domenas.lt -d www.domenas.lt
Pastaba: Užsakant sertifikatą --email patariame nurodyti institucijos bendrinį el. pašto adresą, kuris yra naudojamas informacijos apie SSL sertifikatus (išdavimas, atnaujininas ir pan.) gavimui.
Certbot užsakytas ir išduotas SSL sertifikatas yra išsaugojamas į /etc/letsencrypt/live/<Domenas>
katalogą.
Naudojant Certbot, periodinį atnaujinimą galima vykdyti arba per cron, arba per systemd .
Pridedame sertifikato atnaujinimo pavyzdį:
/etc/cron.d/certbot 0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew
root@test:/etc/cron.d# cd /etc/letsencrypt/renewal
root@test:/etc/letsencrypt/renewal# ls
cert-test.litnet.lt.conf
root@test:/etc/letsencrypt/renewal# cat cert-test.litnet.lt.conf
#renew_before_expiry = 30 days
version = 0.40.0
archive_dir = /etc/letsencrypt/archive/cert-test.litnet.lt
cert = /etc/letsencrypt/live/cert-test.litnet.lt/cert.pem
privkey = /etc/letsencrypt/live/cert-test.litnet.lt/privkey.pem
chain = /etc/letsencrypt/live/cert-test.litnet.lt/chain.pem
fullchain = /etc/letsencrypt/live/cert-test.litnet.lt/fullchain.pem
# Options used in the renewal process
[renewalparams]
account = 07c156570d57e569132f3530f199999
authenticator = apache
installer = apache
server = https://acme-v02.api.letsencrypt.org/directory
Daugiau informacijos:
- Sectigo Certificate Manager administrator’s guide (Chapter 8)
- Cerbot diegimo aprašymas - https://certbot.eff.org/
- Cerbot komandų aprašymas - https://certbot.eff.org/docs/using.html#certbot-command-line-options
- Utenos kolegijos IT administratoriaus parengta atmintinė (Ačiū Mantui !)