Skip to main content

Een DNS-integratie maken om DV-certificaten op load balancers te automatiseren

Voordat DigiCert een DV-certificaat kan uitgeven moet u aantonen dat u controle heeft over het domein dat wordt vermeld in uw certificaataanvraag.

Voor het automatiseren van de installatie van DV-certificaten gebruikt u DNS-integratie om uw controle over de domeinen in uw DV-certificaataanvraag aan te tonen. Voor deze DCV methode, moet u alvorens het verzoek in te dienen een DNS-integratie creëren.

Met uw DNS-integratie kan de DigiCert-automatiseringsdiensten uw referenties gebruiken om de DNS-uitdaging op de DNS-server te plaatsen en de validatie uit te voeren. De DNS-uitdaging wordt automatisch gegenereerd als onderdeel van het automatiseringsproces. Zodra de domeinvalidatie is voltooid, zal de automatisering slagen en het DV-certificaat installeren.

U kunt een DNS-integratie creëren met behulp van een ondersteunde DNS-provider of een aangepast DNS-script.

Een voorbeeld: DNS-uitdaging

example.com,example1.com,example2.com
dns-txt-token
342893284294sfjdkfjshfCOPY 

Voordat u begint

DNS-providers die automatisering ondersteunen bekijken

  1. Log in op de sensorhost.

  2. Ga naar de CLI-map van de sensor.

    cd install_dir/cli

    Waar install_dir de installatiemap voor de sensor is.

  3. Voer de opdracht listsupporteddns uit.

    • Windows: listsupporteddns.bat

    • Linux: ./listsupporteddns.sh

Hier is de lijst van DNS-providers die automatisering ondersteunen.

tabel 1. DNS-providers

Amazon Route 53

Azure

Cloudflare

CloudXNS

Digital Ocean

DNS Trust Manager (DNS Made Easy)

DreamHost

GoogleDNS

Go Daddy

NS1

OVH

RFC2136

Sakura Cloud


Een DNS-integratie maken met een DNS-provider

  1. Log in op de sensorhost.

  2. Ga naar de CLI-map van de sensor.

    cd install_dir/cli

    Waar install_dir de installatiemap voor de sensor is.

  3. Voer de opdracht adddnsintegration uit.

    • Windowsadddnsintegration.bat -type <dns_provider_name>

    • Linux./adddnsintegration.sh -type <dns_provider_name>

  4. Wanneer u de opdracht invoert, verschijnen er een serie prompts voor elke provider. Verstrek de informatie en druk op Enter.

Een voorbeeld: adddnsintegration.bat -type route53

C:\Program Files\DigiCert\DigiCert sensor\cli>adddnsintegration.bat -type route53

Sensor CLI. Copyright 2023, DigiCert Inc.

Add a DNS integration to automate DV certificates. 

Enter alias:Route53Valid
Access key id:AKIAZC26PJRAX775JVKE
Secret key:
Confirm secret key:

DNS integration route53 added.
After adding the DNS integration, go back to CertCentral and link the integration to the load balancer where you want to automate a DV certificate.

Een DNS-integratie maken met een aangepast DNS-script

Voordat u begint

Voordat u begint, maakt u een DNS-script voor het besturingssysteem waarmee u de installatie van het DV-certificaat wilt automatiseren. U kunt een script maken of een van de voorbeeldscripts aanpassen om uw script te definiëren.

Belangrijk

DigiCert beveelt aan de scripts op een standaard locatie te plaatsen, bijvoorbeeld de installatiemap van de sensor. Bijvoorbeeld: sensorinstalldir/localscripts/script-to-upload.bat

Windows DNS-scripts

Voor Windows heeft u twee scripts nodig om te bewijzen dat u controle heeft over de domeinen: DNS .bat-script en ingesloten PowerShell-postscript (.ps1.py.ps, of enige andere opmaak).

Een ingesloten DNS PowerShell-postscript maken

  1. Open Notepad of een ander tekstverwerkingsprogramma.

  2. Definieer de referenties, DNS-uitdaging en afsluitcodes.

  3. Sla het bestand op met  .ps1.py.ps, of enige andere extensie van uw voorkeur. Vergeet niet de locatie te noteren.

Een DNS-script maken

  1. Open Notepad of een ander tekstverwerkingsprogramma.

  2. Definieer het bestandspad van het PowerShell-postScript, het argument om de DNS-uitdaging door te geven, en de afsluitcodes.

  3. Sla het bestand op met de .bat-extensie. Vergeet niet de locatie te noteren.

Linux DNS-script

Voor Linus heeft u een DNS .sh nodig om te bewijzen dat u controle heeft over de domeinen.

Een DNS-script maken

  1. Open Notepad of een ander tekstverwerkingsprogramma.

  2. Definieer de referenties, DNS-uitdaging en afsluitcodes.

  3. Sla het bestand op met de .sh-extensie. Vergeet niet de locatie te noteren.

Een aangepaste DNS-integratie maken

  1. Log in op de sensorhost.

  2. Ga naar de CLI-map van de sensor.

    cd install_dir/cli

    Waar install_dir de installatiemap voor de sensor is.

  3. Voer de opdracht adddnsintegration uit.

    • Windowsadddnsintegration.bat -type custom

    • Linux./adddnsintegration.sh -type custom

  4. Wanneer u de opdracht invoert, verschijnen er een serie prompts. Verstrek de informatie en druk op Enter.

Een voorbeeld: ./adddnsintegration.sh -type custom

[root@c7-sowjanya-124 cli]# ./adddnsintegration.sh -type custom

Sensor CLI.  Copyright 2023, DigiCert Inc.
Add a DNS integration to automate DV certificates.

Enter alias:CustomeDNS
Script file path:/tmp/test.sh

DNS integration custom added.
After adding the DNS integration, go back to CertCentral and link the integration to the load balancer where you want to automate a DV certificate.

Afsluitcodes

Elk programma dat u start wordt beëindigd met een afsluitcode en rapporteert deze aan het besturingssysteem. Een afsluitcode, soms ook wel een retourcode genoemd, is de code die door een uitvoerbaar bestand wordt teruggegeven aan een bovenliggend proces.

tabel 2. Afsluitcodes

Afsluitcode

Beschrijving

0

Succesvolle uitvoering van het script.

1

Het script kon om een of andere reden niet worden uitgevoerd.


Voorbeeldscripts

AWS - DNS PowerShell-postscript (.ps1)

#ensure AWS PStools are installed incl
#https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up-windows.html
#Install-Module -Name AWS.Tools.Installer
#Install-AWSToolsModule AWS.Tools.Route53
#Set-AWSCredential -AccessKey <accesskey> -SecretKey <secretkey> -StoreAs TestDNSProfile

Import-Module AWSPowerShell
Function Set-R53Record {
 
    # Entry parameters
    Param (
		[Parameter(Mandatory=$True)] [String]$Profile,
        [Parameter(Mandatory=$True)][String]$Domain,
        [Parameter(Mandatory=$True)][String]$Type,
        [Parameter(Mandatory=$True)][String]$Name,
        [Parameter(Mandatory=$True)][String]$Value,
        [Int]$TTL = 300,
        [String]$Comment
    )
 
    $DomainDot = $Domain + "."
 
    # Create two objects for R53 update
    $Change = New-Object Amazon.Route53.Model.Change
    $Change.Action = "UPSERT"
    # CREATE: Creates a resource record set that has the specified values.
    # DELETE: Deletes an existing resource record set that has the specified values.
    # UPSERT: If a resource record set doesn't already exist, AWS creates it. If it does, Route 53 updates it with values in the request.
    $Change.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
    $Change.ResourceRecordSet.Name = "$Name.$Domain"
    $Change.ResourceRecordSet.Type = $Type
    $Change.ResourceRecordSet.TTL = $TTL
    # For TXT-based DNS challenges, value must be in quotes
    $challengeValue = if ($Type -eq "TXT") {"""$Value"""} else {$Value}
    $Change.ResourceRecordSet.ResourceRecords.Add(@{Value=$challengeValue})
 
    # Get hosted zone
    $HostedZone = Get-R53HostedZones -ProfileName $Profile| Where-Object { $DomainDot.EndsWith($_.Name) }
    Write-Output "Found HostedZone:$HostedZone"
    # Set final parameters and execute
    $Parameters = @{
        HostedZoneId = $HostedZone.Id
        ChangeBatch_Change = $Change # Object
        ChangeBatch_Comment = $Comment # "Edited A record"
    }
   return Edit-R53ResourceRecordSet -ProfileName $Profile @Parameters
}

if($args.Length -ne 1){
    Write-Output "Args not found"
    exit -1;
}

$fileInput = Get-Content $args[0]
if ($fileInput.Length -lt 3){
    Write-Output "File not found"
   exit -1;
}
$tempDomains = $fileInput[0].Split(",")
$challenge = $fileInput[2]
$domains = @()
foreach ($d in $tempDomains)
    {
        if ("$d" -ne "null")
        {
            Write-Output $d
            $domains = $domains += $d
        }
    }

foreach ($domain in $domains)
{     
    Set-R53Record -Profile DNSProfileName -Domain $domain -Type "TXT" -Name "_dnsauth" -Value $challenge -TTL 86400 -Comment "DNS challenge for $domain"
}

DNS .bat-script

echo "Invoking DNS script"
pushd %~dp0
powershell.exe -File {DNSPostscriptPath} %*
echo "Exit Code : %errorlevel%"
set returnCode=%errorlevel%
popd
EXIT /B %returnCode%

Opmerking

%* bepaalt de DNS-uitdaging. Het haalt zijn waarden uit het postscript.

AWS - DNS .sh-script

#!/usr/bin/bash

set_R53_Record(){
    Profile=$1
    Domain=$2
    Type=$3
    Name=$4
    Value=$5
    TTL=$6
    Comment=$7
    DomainDot="$Domain."
    echo "Profile:$Profile Domain:$Domain"
    HOSTEDZONEID=$(/usr/local/bin/aws route53 list-hosted-zones --profile $Profile | jq '.HostedZones | .[] | select(.Name|inside('\"$DomainDot\"')) | .Id' | tr -d '"')
    cat > change-batch.json << EOL
    {"Comment":"$Comment","Changes":[{"Action":"UPSERT","ResourceRecordSet":{"Name":"$Name.$Domain","Type":"$Type","TTL":$TTL,"ResourceRecords":[{"Value":"\"$Value\""}]}}]}
EOL
    /usr/local/bin/aws route53 change-resource-record-sets --hosted-zone-id $HOSTEDZONEID --profile $Profile --change-batch file://change-batch.json
}


if [ "$#" -ne 1 ]; then
    echo "Args not found"
    exit -1;
fi

 IFS=$'\n' read -d '' -r -a lines < $1

if [ ${#lines[@]} != 3 ]; then
    echo "File not found"
    exit -1;
fi

challenge=${lines[2]}

IFS=',' read -ra domains <<< "${lines[0]}"
for domain in "${domains[@]}"; do
    set_R53_Record default $domain "TXT" "_dnsauth" $challenge 86400 "DNS challenge for $domain"
done

CLI-opdrachten voor DNS-integratie

Windows- en Linux-opdrachten voor het toevoegen en configureren van DNS-integraties of -providers aan sensoren voor automatisering van DV-certificaten op load balancers.

tabel 3. DNS-integratieopdrachten

Opdracht

Syntaxis

Beschrijving

Windowsadddnsintegration.bat

adddnsintegration.bat -type {dns_provider_name}

Een DNS-integratie toevoegen om DV-certificaten te automatiseren.

Linuxadddnsintegration.sh

./adddnsintegration.sh -type {dns_provider_name}

Windowslistsupporteddns.bat

-

Zie de volledige lijst van ondersteunde DNS-providers hieronder.

Linuxlistsupporteddns.sh

Windowslistdnsintegration.bat

listdnsintegration.bat -type {dns_provider_name}

Bekijk de lijst van DNS-integraties die met de sensor zijn geconfigureerd.

Linuxlistdnsintegration.sh

./listdnsintegration.sh -type {dns_provider_name}

Windowsupdatednsintegration.bat

updatednsintegration.bat - alias {alias_name}

De DNS-integratie bijwerken.

Linuxupdatednsintegration.sh

./updatednsintegration.sh - alias {alias_name}

Windowsdeletednsintegration.bat

deletednsintegration.bat - alias {alias_name}

De DNS-integratie verwijderen van de sensor.

Linuxdeletednsintegration.sh

./deletednsintegration.sh - alias {alias_name}