Gå til indhold

Ligger et domæne hos en DNS-udbyder, sslbrain ikke har indbygget, er der fire veje til domænevalidering. Brug CNAME viderestilling, når DNS-udbyderen kan oprette en CNAME-post.

  • Jeres DNS-udbyder står ikke blandt de indbyggede udbydere, eller den har intet API.
  • I kører jeres egen DNS-server.
  • I vil ikke give sslbrain en API-nøgle, der kan ændre hele zonen.

Vejene:

I opretter én gang en CNAME-post fra _acme-challenge.<domæne> til appliancens CNAME-mål. sslbrain får ingen nøgle til jeres DNS. Appliancen skal være forbundet til sslbrain Cloud.

Fremgangsmåden står i CNAME viderestilling i trin 6.

Appliancen opdaterer jeres DNS-server med nsupdate efter RFC 2136, signeret med en TSIG-nøgle. Det kræver:

  • Navneserveren er autoritativ for zonen og tager imod opdateringer signeret med TSIG, fx BIND.
  • TSIG-nøglen må oprette og slette TXT- og CNAME-poster under _acme-challenge i zonen.
  • Appliancen kan nå navneserveren.
  • Zonen kan ses udefra. CA’en slår valideringsposten op i offentlig DNS.
  1. Klik på Tilføj DNS-API adgang (DNS-API). Formularen kræver en indbygget udbyder. Vælg fx Hetzner DNS, skriv en vilkårlig tekst i Hetzner DNS API Token, og klik på Gem. Teksten bruges ikke.

  2. Åbn adgangen igen under Adgange, og vælg native (RFC 2136 nsupdate) under Executor adapter.

  3. Udfyld felterne:

    FeltVærdi
    Nameserver (server)Navneserverens navn eller adresse, fx ns1.internal.example.com
    ZoneZonen, fx example.com
    TSIG algoritmehmac-sha256 (standard), hmac-sha384, hmac-sha512, hmac-sha224 eller hmac-sha1
    TTL (sekunder)5 til 86400, standard 60
    BrugernavnTSIG-nøglens navn
    Kodeord / NøgleTSIG-nøglens hemmelighed i base64
  4. Skriv zonen i Zone-bindinger (en pr linje), og gem.

Har DNS-udbyderen et REST-API, som sslbrain ikke har indbygget, beskriver I API’et i en formular. sslbrain bruger beskrivelsen til at finde zonen, oprette valideringsposten og slette den igen. Nøglerne ligger krypteret i vaulten på adgangen.

  1. Klik på Tilføj DNS-API adgang, og vælg Ny custom REST DNS-udbyder… under DNS-udbyder.

  2. Beskriv udbyderen:

    AfsnitFelter
    UdbyderenNavn på udbyderen, Beskrivelse (valgfri), Base-URL (kun HTTPS på en offentlig adresse)
    LoginAuth-type: Bearer token, Basic auth (brugernavn og adgangskode), Navngivet header, Nøgle og secret i én header eller Query-parameter. Derefter Header-navn, Header-format eller Query-parameter efter typen
    ZonerSti til zone-listen (GET), JSON-path til listen, JSON-path til zone-id, JSON-path til zone-navn
    Opret recordMetode (POST, PUT eller PATCH), Sti, Body-template (JSON), TTL (sekunder)
    Slet recordSletning: Single-call (oprettelsen returnerer record-id, og sletning er én DELETE) eller To-trins (list records, find id via JSON-path, derefter DELETE), med stierne og JSON-paths til dem

    Stier og body kan bruge {zone_id}, {zone}, {name} (relativt til zonen), {fqdn}, {type}, {value} og {ttl}. Stien til sletning kan også bruge {record_id}. En JSON-path skrives med punktum, fx data.records eller result.

  3. Udfyld nøglerne, og klik på Test adgang. Testen kører mod udbyderen uden at gemme noget.

  4. Klik på Gem.

Udbyderen kaldes altid direkte fra appliancen, aldrig via sslbrain Cloud-proxyen. En ændring i beskrivelsen gælder alle adgange, der bruger udbyderen.

En DNS-API-adgang kan køre et script på appliancen i stedet for at kalde en udbyder. Webfladen kan ikke lægge filen på appliancen, så den lægges på plads sådan:

  • Virtuel appliance: vælg 9 Danger zone og 1 Open a root shell i konsolmenuen. Root-shellen åbnes med et svar fra sslbrain Cloud. Læg filen i /opt/sslbrain/data/dns-scripts/, som er /data/dns-scripts/ inde i appliancen.
  • Docker: læg filen i mappen dns-scripts på den volumen, der er monteret som /data.

Gør filen eksekverbar med chmod 755. Kan I ikke komme til appliancens filsystem, så brug RFC 2136 eller en egen REST-udbyder.

Opret adgangen som til RFC 2136, men vælg script under Executor adapter. Udfyld Sti til operator-script, fx /data/dns-scripts/<navn>.sh, og eventuelt Script timeout (sekunder) (5 til 300, standard 60).

Scriptet får disse miljøvariabler:

VariabelIndhold
SSLBRAIN_DNS_ACTIONcreate eller remove
SSLBRAIN_DNS_RECORD_NAMEPostens navn
SSLBRAIN_DNS_RECORD_TYPEPostens type
SSLBRAIN_DNS_RECORD_VALUEPostens værdi
SSLBRAIN_DNS_FQDNDet navn, der valideres
SSLBRAIN_DNS_AUTODNS_TARGETAppliancens CNAME-mål
SSLBRAIN_DNS_REQUIREMENT_IDValideringens id, når der er et
SSLBRAIN_DNS_USERNAMEBrugernavn fra adgangen
SSLBRAIN_DNS_SECRET_FILESti til en fil med rettighederne 0600, der indeholder Kodeord / Nøgle. Hemmeligheden står aldrig på kommandolinjen

Exit-kode 0 betyder udført, 2 betyder udført med advarsel, og alle andre koder betyder fejl.

  • CNAME viderestilling: skriv et navn i zonen under Test et domæne på Domænevalidering, og klik på Tjek domæne.
  • Egen REST-udbyder: åbn adgangen under Adgange, og klik på Test adgang.
  • RFC 2136 og script: der er ingen Test adgang. Opret reglen som i trin 8. Panelet Domænevalidering i guiden skal vise “Valideres via DNS API-credential” og navnet på adgangen.

Fejler udstedelsen alligevel, så se Validering fejler.