Yleistä ACME-protokollasta
ACME (Automatic Certificate Management Environment) on Internet-standardissa RFC8555 määritelty tapa hoitaa palvelinvarmenteiden asentaminen ja uusinta täysin automaattisesti. ACME koostuu varmennepalvelun tarjoajan palvelusta, johon asiakkaan verkkopalvelimella oleva ACME-asiakasohjelmisto ottaa yhteyden silloin, kun varmenne luodaan ensi kertaa tai uusitaan.
Telian ACME-palvelu
Telia tarjoaa ACME-palvelua Domain Validated (DV), Organization Validated (OV) ja yksityisten TLS-tyyppisten varmenteiden luontiin. Palvelu on osa Telia varmennepalvelun FullSSL-itsepalveluportaalia. Asiakas tekee Telian kanssa maksuttoman sopimuksen varmenneitsepalvelun käyttöönotosta ja Telia varmistaa asiakkaan yritys- ja pääkäyttäjätiedot. Tämän jälkeen asiakkaan pääkäyttäjät voivat luoda ACME-tunnuksia Secure Manager-itsepalveluportaalilla. Varmenteet laskutetaan kuukausittain FullSSL-palvelun laskutuksen yhteydessä. Asiakas saa myös samalla mahdollisuuden tehdä varmenteita perinteisellä CSR-menetelmällä itsepalvelun kautta manuaalisesti.
Kuten CSR-menetelmässä, ACMElla käytettäessä verkkotunnuksen etuliitettä www., esimerkiksi www.yritys.fi, saadaan varmenteeseen ilmaiseksi mukaan muoto yritys.fi. Tällöin sivusto toimii normaalisti mentäessä sille ilman www-etuliitettä.
Autentikoituminen hoidetaan käyttäen Extended Account Binding-menetelmää, joka koostuu Secure Managerilla itsepalveluna luodusta KID/HMAC-käyttäjätunnuksesta ja näistä muodostuvasta avaimesta.
Asiakasohjelma
Automaattinen ACME tarvitsee asiakasohjelman hoitamaan varmenteiden luomista ja uusimista palvelimella. Asiakasohjelmistoja on useita. Ne ovat pääosin vapaita ohjelmistoja, jotka ladataan netistä ja asennetaan palvelimelle. Tunnetuimmat ACME-asiakasohjelmat ovat lego
ja certbot
. ACME-asiakasohjelmat tulee asettaa tukemaan Telian varmennepalvelua seuraavilla ohjeilla. Lego on suositeltavaa asentaa Docker-asennuksena.
Validointi ja varmenteen luonti ACMElla
Kuten aina julkisten varmenteiden luonnissa, verkkotunnuksen hallinta täytyy varmistaa ennen varmenteen luontia käyttäen varmenneyhteisön määrittelemiä tapoja. Telian varmennepalvelun ACME tukee kahta tapaa:
- Http-haaste
-s https://acme.trust.telia.com/directory
Telian ACME-palvelun osoite
-m testi.osoite@company.com
Asettaa ACME-kontaktikentän omaksi sähköpostiosoitteeksi
-a
Hyväksyy automaattisesti ACME-palvelun käyttöehdot
--eab
Lego käyttää EAB-menetelmää käyttäjätilin rekisteröinnissä
--kid x50y04z3-3d34-429e-00fa-b4c8d04e3471
EAB-asiakastunniste, joka tunnetaan ACME-standardissa lyhenteellä KID
--hmac ObzSkX2tq3PdSxPuA-iqw6fooPdA2aZRbarER739OPM
EAB-avain, joka tunnetaan ACME-standardissa lyhenteellä HMAC
-d www.acmedemodomain.fi
Verkkotunnus, jolle varmennetta pyydetään
--http
Käytettävä haastetapaa
run
Legon komento, joka ajaa käyttäjätunnuksen rekisteröinnin (jos sitä ei ole tehty aiemmin) ja pyytää varmenteen
- DNS-haaste
-s https://acme.trust.telia.com/directory
Telian ACME-palvelun osoite
-m testi.osoite@company.com
Asettaa ACME-kontaktikentän omaksi sähköpostiosoitteeksi
-a
Hyväksyy automaattisesti ACME-palvelun käyttöehdot
--eab
Lego käyttää EAB-menetelmää käyttäjätilin rekisteröinnissä
--kid x50y04z3-3d34-429e-00fa-b4c8d04e3471
EAB-asiakastunniste, joka tunnetaan ACME-standardissa lyhenteellä KID
--hmac ObzSkX2tq3PdSxPuA-iqw6fooPdA2aZRbarER739OPM
EAB-avain, joka tunnetaan ACME-standardissa lyhenteellä HMAC
-d www.acmedemodomain.fi
Verkkotunnus, jolle varmennetta pyydetään
--dns route53
Käytettävä haastetapa ja käytetyn nimipalveluntarjoajan koodi. Tämä Amazonin nimipalvelua käyttävä liitännäinen hakee käyttäjätunnukset joko ~/.aws/credentials -tiedostosta tai shell-ympäristömuuttujista
run
Legon komento, joka ajaa käyttäjätunnuksen rekisteröinnin (jos sitä ei ole tehty aiemmin) ja pyytää varmenteen
Http-haasteessa ACME-palvelu varmistaa verkkotunnuksen hallinnan ACME-asiakasohjelmistolla. Asiakasohjelma kirjautuu ACME-tunnuksilla, rekisteröi käyttäjätunnuksen, saa validointitietueen ja asettaa validointitietueen luettavaksi. Telian ACME-palvelu lukee validointietueen ACME-ohjelman web-palvelimesta, vahvistaa verkkotunnuksen hallinnan, luo varmenteen ja toimittaa varmenteen ACME-asiakasohjelmalle. ACME-asiakasohjelma täytyy ajaa palvelimella, jolle on asetettu sama verkkotunnus, mikä tulee varmenteeseen. Huomioi, että portti 80 täytyy olla auki Internetiin, jotta haaste voidaan validoida ja palvelimen oma www-palvelinohjelmisto tulee olla ajettuna alas, jotta portti 80 on asiakasohjelman käytössä. Http-haastetta ei voi käyttää verkoissa, joihin ei pääse Internetistä eikä validointia voi suorittaa manuaalisesti palvelimen omalla www-palvelinohjelmistolla.
Esimerkkikomento legolla:
lego -s https://acme.trust.telia.com/directory -m testi.osoite@company.com -a --eab --kid x50y04z3-3d34-429e-00fa-b4c8d04e3471 --hmac ObzSkX2tq3PdSxPuA-iqw6fooPdA2aZRbarER739OPM -d www.acmedemodomain.fi --http
DNS-haasteessa validointidata laitetaan nimipalveluun, josta ACME-palvelu lukee datan ja vahvistaa verkkotunnuksen hallinnan. Yksinkertaisimmin DNS-haaste toimii niiden nimipalveluiden kanssa, joilla on ACME-asiakasohjelmassa tuettu rajapinta, jonka kauttaa validointidata voidaan päivittää nimipalveluun. Legossa on tuki useille nimipalveluntarjoajille valmiina. Telian tarjoama verkkotunnusten hallintapalvelu ei vielä tarjoa rajapintaa. Tapauksissa, joissa käytetty nimipalvelu ei tue rajapintaa, on mahdollista rakentaa rajapinta Designate DNSaaS for OpenStack-palvelun avulla. Jos rajapintaa ei ole mahdollista käyttää, DNS-haaste on tehtävissä manuaalisesti nimipalvelua päivittämällä.
Esimerkkikomento legolla käyttäen Amazonin Route53-nimipalvelua:
lego -s https://acme.trust.telia.com/directory -m testi.osoite@company.com -a --eab --kid x50y04z3-3d34-429e-00fa-b4c8d04e3471 --hmac ObzSkX2tq3PdSxPuA-iqw6fooPdA2aZRbarER739OPM -d www.acmedemodomain.fi --dns route53 run
Esimerkkikomento legolla käyttäen manuaalista DNS-haastetta:
lego -s https://acme.trust.telia.com/directory -m testi.osoite@company.com -a --eab --kid x50y04z3-3d34-429e-00fa-b4c8d04e3471 --hmac ObzSkX2tq3PdSxPuA-iqw6fooPdA2aZRbarER739OPM -d www.acmedemodomain.fi --dns manual -a run
Komento on muuten vastaava kuin tuettuja nimipalveluita käytettäessä paitsi nimipalvelun nimi on korvattu määritteellä "manual". Manuaalisessa menettelyssä lego esittää validointidatan ruudulla näin:
[INFO] [acmedemodomain.fi] acme: use dns-01 solver
[INFO] [acmedemodomain.fi] acme: Preparing to solve DNS-01
lego: Please create the following TXT record in your acmedemodomain.fi. zone:
_acme-challenge.acmedemodomain.fi. 120 IN TXT "dry1RBuUONWZ31n9sF-awbcLdognozJbFV284oAI"
lego: Press 'Enter' when you are done
Kun validointidata on asetettu nimipalvelun hallintanäkymän kautta verkkotunnuksenne TXT-tietueeksi, rivinvaihdon painaminen suorittaa DNS-validoinnin ja ACME palauttaa varmenteen asiakasohjelmalle.
Asiakasohjelmiston muut toiminnot
ACME-asiakasohjelmistolla voidaan tehdä muita varmennetoimenpiteitä uuden varmenteen pyytämisen lisäksi. Legossa ovat tarjolla run-komennon lisäksi seuraavat:
revoke
- poista varmenne käytöstärenew
- uudista varmennednshelp
- tulosta legon tukemat DNS-palveluntarjoajatlist
- tulosta legon löytämät varmenteet ja niiden tiedot
Varmenteen asennus
Varmenteen asennuksen vaatimat toimet riippuvat käytetystä palvelimesta ja sillä ajetusta palvelusta. ACME-asiakasohjelman tallentama varmenne voidaan asentaa skripteillä tai cron-ajolla suoraan tai ajastetusti varmennetta hyödyntäviin sovelluksiin. Varmennusketjun juuri- ja välitason varmenteet sisältyvät legoa käytettäessä tallennettuun varmennetiedostoon.