ACME VIA TELIA CA-SERVICE

Allmän information om ACME Protokollet

ACME (Automatic Certificate Management Environment) är ett helautomatiserat sätt att utfärda och förnya servercertifikat på enligt RFC8555. För att fungera så består ACME av en certifikatservice som körs på utfärdarsidan (CA:n) samt ett klientcertifikat som körs på kundsidan. Klienten interagerar med CA ACME service när en ansökan av ett servercertifikat görs för första gången, förnyas eller revokeras.

ACME Service hos Telia

Telia erbjuder ACME Service för utfärdande av domänvaliderade (DV), organisationsvaliderade och privata TLS-certifikat. Tjänsten är en del av en självbetjäningsportal kallad FullSSL. Som kund fyller du i ett avtal med Telia för att få tillgång till tjänsten. Portalen har ingen månadskostnad, man betalar endast för själva certifikaten. Telia genomför en validering av dig som kund i samband med att tjänsten sätts upp. Efter genomförd och godkänd validering får du access till portalen. Certifikat faktureras månaden efter de utfärdats från portalen. Tjänsten ger även möjligheten att manuellt skapa certifikat med en traditionell CSR.

När man beställer med en CSR och ett domänprefix (www.) kommer certifikatet att innehålla ett kostnadsfritt domännamn utan prefix. Exempel: En ansökan för ett certifikat med DNS-namn www.company.com kommer även att innehålla DNS-namnet company.com. Certifikatet kommer då att fungera oavsett om man som besökare i sin webbläsare har med prefix eller inte i adressen.

Autentisering görs via en metod som kallas “Extended Account Binding”. Den består av ett kund-ID kallat KID samt en nyckelsträng som kallas HMAC. Dessa värden skapas via självbetjäningsportalen då den används för första gången.

Klientprogramvara

Den automatiserade ACME-tjänsten kräver att en klientprogramvara installeras på kundens server. Mjukvaran ser sedan till att certifikathanteringen fungerar på serversidan. Det finns ett antal klientprogramvaror man kan ladda ner gratis från exempelvis Github. Den kanske mest välanvända programvarorna heter lego och certbot. Du behöver manuellt konfigurera ACME-klienten för att använda Telias CA Service. Lego rekommenderas att användas som Docker container.

Validering och certifikatsansökan via ACME

Publikt betrodda certifikat kräver alltid validering av att man har kontroll på domänen. Telia ACME stödjer två metoder:

  • Http-challenge

  • Med http-challenge gör ACME service en validering av domänen genom att använda ACME klientmjukvaran. I det fallet görs autentisering via ACME och man får då en s k ”validation data string” som behöver kunna läsas av via Telia ACME service. ACME-klienten måste köras på den server som har valideringssträngen. Notera att port 80 måste vara öppen mot internet och mjukvaran installerad innan det går att genomföra valideringen.

    Ett exempel på att använda lego:

    lego -s https://acme.trust.telia.com/directory -m test.address@company.com -a --eab --kid x50y04z3-3d34-429e-00fa-b4c8d04e3471 --hmac ObzSkX2tq3PdSxPuA-iqw6fooPdA2aZRbarER739OPM -d www.acmedemodomain.se --http

    • -s https://acme.trust.telia.com/directory

      Telia ACME service address

    • -m test.address@company.com

      Sets ACME contact value to your own email address

    • -a

      Accepts automatically ACME terms of service

    • --eab

      Uses EAB method for account creation

    • --kid x50y04z3-3d34-429e-00fa-b4c8d04e3471

      EAB customer ID, which is known in ACME standard as a KID

    • --hmac ObzSkX2tq3PdSxPuA-iqw6fooPdA2aZRbarER739OPM

      EAB key, which is known in ACME standard as a HMAC

    • -d www.acmedemodomain.se

      The domain receiving the certificate

    • --http

      Challenge method

    • run

      Lego command, which runs a user account registration (in case of the first run) and requests a certificate

  • DNS-challenge

  • Med DNS-validering läggs valideringsdatat i DNS-service. ACME läser informationen från DNS-service och kan då validera att man har kontroll på domänen. Den här metoden fungerar smidigt med DNS-tjänster som stödjer ett DNS API vilket stödjs av ACME-klienten. Lego stödjer ett antal DNS services per default. Domäner som hanteras av Telia kan inte använda ett API för validering. I de fall där API-stöd saknas är det dock möjligt att skapa ett via Designate DNSaaS for OpenStack. Om det mot förmodan inte kan skapas via OpenStack kan den manuella processen användas.

    Exempel med lego och Amazon Route53 DNS service:

    lego -s https://acme.trust.telia.com/directory -m test.address@company.com -a --eab --kid x50y04z3-3d34-429e-00fa-b4c8d04e3471 --hmac ObzSkX2tq3PdSxPuA-iqw6fooPdA2aZRbarER739OPM -d www.acmedemodomain.se --dns route53 run

    • -s https://acme.trust.telia.com/directory

      Telia ACME service address

    • -m test.address@company.com

      Sets ACME contact value to your own email address

    • -a

      Accepts automatically ACME terms of service

    • --eab

      Uses EAB method for account creation

    • --kid x50y04z3-3d34-429e-00fa-b4c8d04e3471

      EAB customer ID, which is known in ACME standard as a KID

    • --hmac ObzSkX2tq3PdSxPuA-iqw6fooPdA2aZRbarER739OPM

      EAB key, which is known in ACME standard as a HMAC

    • -d www.acmedemodomain.se

      The domain receiving the certificate

    • --dns route53

      Challenge method and identifier for DNS service. Plugin using Amazon DNS service fetches credentials either from file ~/.aws/credentials or from a shell environment variable.

    • run

      Lego command, which runs a user account registration (in case of the first run) and requests a certificate

    Exempel på lego och en manuell DNS-challenge:

    lego -s https://acme.trust.telia.com/directory -m test.address@company.com -a --eab --kid x50y04z3-3d34-429e-00fa-b4c8d04e3471 --hmac ObzSkX2tq3PdSxPuA-iqw6fooPdA2aZRbarER739OPM -d www.acmedemodomain.se --dns manual -a run

    The command is otherwise similar to DNS API command except DNS service identifier is replaced by 'manual'. In manual method lego presents validation data this way:

    [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.se. zone:
    _acme-challenge.acmedemodomain.se. 120 IN TXT "dry1RBuUONWZ31n9sF-awbcLdognozJbFV284oAI"
    lego: Press 'Enter' when you are done

    När valideringsdatat är implementerat via DNS service management som ett TXT record för domänen. Valideringen aktiveras via ACME genom att trycka “Enter”. ACME kommer då att returnera certifikatet till klienten.

Andra funktioner i klientprogramvaran

En ACME mjukvara kan hantera andra funktioner än att bara hämta nya certifikat. Följande kommandon kan användas i Lego:

  • revoke - spärra ett certifikat
  • renew - förnya ett certifikat
  • dnshelp - lista DNS services supporterade av lego
  • list - lista alla certifikat some kan hittas av lego

Installera certifikat

Hur man gör för att installera ett certifikat beror vad det är för servertyp och vilken service som körs. Ett certifikat som sparats av ACME-klienten kan installeras via script, cron eller ett schemalagt jobb. Rot och mellanliggande certifikat är inkluderade i certifikatsfilen när man använder lego.