Gå til indhold

sslbrain har 19 indbyggede DNS-udbydere. Ligger et domæne et andet sted, er der fire veje til domænevalidering.

  • Jeres DNS-udbyder står ikke på listen over indbyggede udbydere, eller den har intet API.
  • I kører jeres egen DNS-server til interne eller eksterne zoner.
  • I vil ikke give sslbrain en API-nøgle, der kan ændre hele zonen.
SituationVej
Alle udbydere, også uden APICNAME viderestilling
Egen DNS-server, der tager imod dynamiske opdateringer med TSIGRFC 2136
Udbyder med et REST-API, sslbrain ikke kenderEgen REST-udbyder
Et script, der allerede ligger på appliancenScript

I opretter én gang en CNAME-post fra _acme-challenge.<domæne> til appliancens CNAME-mål. Derefter skal DNS for domænet ikke røres igen, og sslbrain får ingen nøgle til jeres DNS. Det kræver kun, at jeres DNS-udbyder kan oprette en CNAME-post, og at appliancen er forbundet til sslbrain Cloud.

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

sslbrain kan opdatere jeres egen DNS-server med RFC 2136 (dynamic update), signeret med en TSIG-nøgle. Appliancen kører selv nsupdate mod navneserveren.

Forudsætninger:

  • 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 på netværket.
  • CA’en slår valideringsposten op i offentlig DNS, så zonen skal kunne ses udefra.
  1. Opret en DNS-API-adgang med Tilføj DNS-API adgang, som beskrevet i DNS-API. Formularen til en ny adgang kræver en indbygget udbyder. Vælg fx Hetzner DNS, og skriv en vilkårlig tekst i Hetzner DNS API Token; feltet bruges ikke, når adapteren er skiftet i trin 2. Klik på Gem.

  2. Åbn adgangen igen under Adgange, og vælg native (RFC 2136 nsupdate) under Executor adapter (feltet hedder Executor adapter også på dansk).

  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. Den erstatter teksten fra trin 1
  4. Skriv zonen i Zone-bindinger (en pr linje), så adgangen bruges til navne i zonen, og gem.

Har DNS-udbyderen et REST-API, som sslbrain ikke har en indbygget udbyder til, beskriver I API’et i en formular. sslbrain bruger beskrivelsen til at finde zonen, oprette valideringsposten og slette den igen. Beskrivelsen gemmes uden nøgler; 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 beskrivelsen og nøglerne mod udbyderen uden at gemme noget.

  4. Klik på Gem.

En egen REST-udbyder kaldes altid direkte fra appliancen, aldrig via sslbrain Cloud-proxyen. Ændringer 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. Scriptet skal ligge som en eksekverbar fil på appliancen, fx /data/dns-scripts/<navn>.sh. Appliancens webflade kan ikke lægge en fil dertil, så filen lægges på plads fra maskinen:

  • Virtuel appliance: vælg 9 Danger zone og derefter 1 Open a root shell i konsolmenuen (konsolmenuen), og læg filen i /opt/sslbrain/data/dns-scripts/. Mappen er /data 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.

Scriptet vælges som RFC 2136 ovenfor, men med script under Executor adapter. Felterne er Sti til operator-script og 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. Testen måler kun CNAME viderestillinger.
  • Egen REST-udbyder: åbn adgangen under Adgange, og klik på Test adgang.
  • RFC 2136 og script: siden har ingen Test adgang for de to. Opret reglen som i trin 8, og kontrollér panelet Domænevalidering i guiden.
  • Alle fire veje: panelet Domænevalidering i reglens guide viser for hvert navn, hvilken vej der dækker det. For en DNS-API-adgang står der “Valideres via DNS API-credential” og navnet på adgangen.

Fejler udstedelsen alligevel, se Validering fejler.