TELIA VARMENNEPALVELUN ACME

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-palvelusta seuraavat varmennetyypit:

  • julkisesti luotettu DV (Domain Validated) TLS-varmenne
  • julkisesti luotettu OV (Organization Validated) TLS-varmenne
  • julkisesti ei-luotetut yksityisten CA:eiden TLS-varmenteet (tarvitaan Hosted CA-palvelu, tilaus telia.fi/ssl Lisäpalvelut-lomakkeella)

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 Certificate 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 Certificate 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 kolmea tapaa:

  • Esivalidointi

  • Telian varmennepalvelu tukee esivalidointia, jossa verkkotunnus validoidaan etukäteen ja sitä ei ole tarpeen validoida joka kerta varmenteita luotaessa. Validointi tehdään varmenneportaalissa ja siihen voidaan käyttää portaalin sallimia validointimenetelmiä. Validointi tulee uusia CA/BR-säädösten edellyttäminä aikoina. Jos validointia ei uusita ajoissa, ACME alkaa validoimaan HTTP-01 tai DNS-01-menetelmillä.

    • Http-haaste

    • 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

      • -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

    • 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

      • -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

      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 varmenne
    • dnshelp - tulosta legon tukemat DNS-palveluntarjoajat
    • list - 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.

    ACME ARI

    ARI:n avulla ACME-palvelin (CA) voi antaa ACME-asiakkaille ehdotuksia varmenteen uusimisikkunasta. CA saattaa tarvita tätä vaihtoehtoa, jos uusissa varmenteissa havaitaan haavoittuvuuksia ja varmenne on uusittava nopeammin kuin ACME-asiakas on alun perin määrittänyt.

    Asiakkaita suositellaan käyttämään ACME-client-ohjelmia, jotka tukevat ARI-toiminnallisuutta.

    Sisäverkon ACME-lisäpalvelu

    Telian ACME-palvelusta on mahdollista toteuttaa versio, jossa frontend-osio on asiakkaalla. Tällöin on mahdollista luoda julkisesti luotettuja varmenteita verkoissa kyseisen verkon laitteille, joista ei ole pääsyä Internetiin julkisessa verkossa oleviin ACME-palveluihin, kuten Telian tavalliseen ACME-palveluun tai Let's Encryptiin. Tämä ratkaisu vaatii esivalidoitujen verkkotunnusten käyttämistä. Asiakkaan frontend-palvelusta tarvitaan verkkoyhteys Telialle varmenteen luontia varten.