Skip to main content

Erstellen einer DNS-Integration zur Automatisierung von DV-Zertifikaten auf Load Balancern

Bevor DigiCert Ihr DV-Zertifikat ausstellen kann, müssen Sie Ihre Kontrolle über die Domäne in Ihrem Zertifikatsantrag nachweisen.

Verwenden Sie zur Automatisierung der DV-Zertifikatsinstallation die DNS-Integration, um Ihre Kontrolle über die Domänen in Ihrer DV-Zertifikatsanforderung nachzuweisen. Für diese DCV-Methode müssen Sie eine DNS-Integration erstellen, bevor Sie die Anfrage senden können.

Ihre DNS-Integration ermöglicht es den DigiCert-Automatisierungsdiensten, Ihre Anmeldeinformationen zu verwenden, um die DNS-Abfrage auf dem DNS-Server zu platzieren und die Validierungsprüfung abzuschließen. Die DNS-Abfrage wird automatisch im Rahmen des Automatisierungsprozesses generiert. Nach Abschluss der Domänenvalidierung wird die Automatisierung erfolgreich durchgeführt und das DV-Zertifikat installiert.

Sie können eine DNS-Integration mithilfe eines unterstützten DNS-Anbieters oder eines angepassten DNS-Skripts erstellen.

Beispiel: DNS-Abfrage

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

Bevor Sie beginnen

Durch Automatisierung unterstützten DNS-Anbietern anzeigen

  1. Melden Sie sich beim Sensor-Host an.

  2. Gehen Sie ins CLI-Verzeichnis des Sensors.

    cd install_dir/cli

    Wobei install_dir das Installationsverzeichnis für den Sensor ist.

  3. Führen Sie den Befehl listsupporteddns aus.

    • Windows: listsupporteddns.bat

    • Linux: ./listsupporteddns.sh

Hier ist die Liste der von der Automatisierung unterstützten DNS-Anbieter.

Tabelle 1. DNS-Anbieter

Amazon Route 53

Azure

Cloudflare

CloudXNS

DreamHost

Digital Ocean

GoogleDNS

Go Daddy

NS1

OVH

RFC2136

Sakura Cloud



Erstellen einer DNS-Integration mit einem DNS-Anbieter

  1. Melden Sie sich beim Sensor-Host an.

  2. Navigieren Sie zum CLI-Verzeichnis des Sensors.

    cd install_dir/cli

    Wobei install_dir das Installationsverzeichnis für den Sensor ist.

  3. Führen Sie den Befehl adddnsintegration aus.

    • Windowsadddnsintegration.bat -type <dns_provider_name>

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

  4. Wenn Sie den Befehl eingeben, erscheint eine Reihe von Eingabeaufforderungen für jeden Anbieter. Geben Sie die Informationen ein, und drücken Sie die Eingabetaste.

Beispiel: adddnsintegration.bat -type route53

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

Sensor CLI. Copyright 2022, 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.

Erstellen einer DNS-Integration mit einem angepassten DNS-Skript

Bevor Sie beginnen

Erstellen Sie vor dem Start ein DNS-Skript für das Betriebssystem, auf dem Sie die DV-Zertifikatsinstallation automatisieren möchten. Sie können ein Skript erstellen oder eines der Beispielskripte ändern, um Ihr Skript zu definieren.

Wichtig

DigiCert empfiehlt, die Skripte an einem Standardspeicherort abzulegen, z. B. im Installationsverzeichnis des Sensors. Beispiel: sensorinstalldir/localscripts/script-to-upload.bat

Windows DNS-Skripte

Für Windows benötigen Sie zwei Skripte, um Ihre Kontrolle über die Domänen zu beweisen: Ein DNS-Skript (.bat) und ein eingebettetes Postscript (.ps1,.py,.ps oder jedes andere Format).

Ein eingebettetes DNS PowerShell-Postscript erstellen

  1. Öffnen Sie Notepad oder ein anderes Textbearbeitungstool.

  2. Definieren Sie die Anmeldedaten, die DNS-Abfrage und die Exit-Codes.

  3. Speichern Sie die Datei mit.ps1,.py,.ps oder einer anderen Erweiterung Ihrer Wahl. Achten Sie darauf, den Speicherort zu notieren.

DNS-Skript erstellen

  1. Öffnen Sie Notepad oder ein anderes Textbearbeitungstool.

  2. Definieren Sie den Pfad für den Speicherort der PowerShell Postscript-Datei, das Argument zur Übergabe der DNS-Abfrage und die Exit-Codes.

  3. Speichern Sie die Datei mit der Erweiterung .bat. Achten Sie darauf, den Speicherort zu notieren.

Linux DNS-Skript

Für Linux benötigen Sie ein DNS.sh-Skript, um Ihre Kontrolle über die Domänen zu beweisen:

Ein DNS-Skript erstellen

  1. Öffnen Sie Notepad oder ein anderes Textbearbeitungstool.

  2. Definieren Sie die Anmeldedaten, die DNS-Abfrage und die Exit-Codes.

  3. Speichern Sie die Datei mit der Erweiterung .sh. Achten Sie darauf, den Speicherort zu notieren.

Erstellen Sie eine benutzerdefinierte DNS-Integration

  1. Melden Sie sich beim Sensor-Host an.

  2. Navigieren Sie zum CLI-Verzeichnis des Sensors.

    cd install_dir/cli

    Wobei install_dir das Installationsverzeichnis für den Sensor ist.

  3. Führen Sie den Befehl adddnsintegration aus.

    • Windowsadddnsintegration.bat -type custom

    • Linux./adddnsintegration.sh -type custom

  4. Wenn Sie den Befehl eingeben, erscheint eine Reihe von Eingabeaufforderungen. Geben Sie die Informationen ein, und drücken Sie die Eingabetaste.

Beispiel: ./adddnsintegration.sh -type custom

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

Sensor CLI.  Copyright 2022, 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.

Exit-Codes

Jedes Programm, das Sie starten, wird mit einem Exit-Code beendet und dem Betriebssystem gemeldet. Ein Exit-Code, manchmal auch als Return-Code bekannt, ist der Code, der von einer ausführbaren Datei an einen übergeordneten Prozess zurückgegeben wird.

Tabelle 2. Exit-Codes

Exit-Code

Beschreibung

0

Erfolgreiche Ausführung des Skripts.

1

Das Skript konnte aus irgendeinem Grund nicht ausgeführt werden.



Beispielskripte

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
    #$Change.ResourceRecordSet.ResourceRecords.Add(@{Value=$Value})
    $Change.ResourceRecordSet.ResourceRecords.Add(@{Value=if ($Type -eq "TXT") {"""$Value"""} else {$Value}})
 
    # 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-Skript

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

Anmerkung

%* bestimmt die DNS-Abfrage. Es bezieht seine Werte aus der Postscript.

AWS – DNS.sh-Skript

#!/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-Befehle für die DNS-Integration

Windows- und Linux-Befehle zum Hinzufügen und Konfigurieren von DNS-Integrationen oder Providern zu Sensoren für die Automatisierung von DV-Zertifikaten auf Load Balancern.

Tabelle 3. DNS-Integrationsbefehle

Befehl

Syntax

Beschreibung

Windowsadddnsintegration.bat

adddnsintegration.bat -type {dns_provider_name}

Fügen Sie eine DNS-Integration zur Automatisierung von DV-Zertifikaten hinzu.

Linuxadddnsintegration.sh

./adddnsintegration.sh -type {dns_provider_name}

Windowslistsupporteddns.bat

-

Zeigen Sie die vollständige Liste der unterstützten Systeme an.

Linuxlistsupporteddns.sh

Windowslistdnsintegration.bat

listdnsintegration.bat -type {dns_provider_name}

Zeigen Sie die Liste der mit dem Sensor konfigurierten DNS-Integrationen an.

Linuxlistdnsintegration.sh

./listdnsintegration.sh -type {dns_provider_name}

Windowsupdatednsintegration.bat

updatednsintegration.bat - alias {alias_name}

Aktualisieren Sie die DNS-Integration.

Linuxupdatednsintegration.sh

./updatednsintegration.sh - alias {alias_name}

Windowsdeletednsintegration.bat

deletednsintegration.bat - alias {alias_name}

Löschen Sie die DNS-Integration vom Sensor.

Linuxdeletednsintegration.sh

./deletednsintegration.sh - alias {alias_name}



Erstellen einer DNS-Integration mit einem angepassten DNS-Skript

Bevor Sie beginnen

Erstellen Sie vor dem Start ein DNS-Skript für das Betriebssystem, auf dem Sie die DV-Zertifikatsinstallation automatisieren möchten. Sie können ein Skript erstellen oder eines der Beispielskripte ändern, um Ihr Skript zu definieren.

Wichtig

DigiCert empfiehlt, die Skripte an einem Standardspeicherort abzulegen, z. B. im Installationsverzeichnis des Sensors. Beispiel: sensorinstalldir/localscripts/script-to-upload.bat

Windows DNS-Skripte

Für Windows benötigen Sie zwei Skripte, um Ihre Kontrolle über die Domänen zu beweisen: Ein DNS-Skript (.bat) und ein eingebettetes Postscript (.ps1,.py,.ps oder jedes andere Format).

Ein eingebettetes DNS PowerShell-Postscript erstellen

  1. Öffnen Sie Notepad oder ein anderes Textbearbeitungstool.

  2. Definieren Sie die Anmeldedaten, die DNS-Abfrage und die Exit-Codes.

  3. Speichern Sie die Datei mit.ps1,.py,.ps oder einer anderen Erweiterung Ihrer Wahl. Achten Sie darauf, den Speicherort zu notieren.

DNS-Skript erstellen

  1. Öffnen Sie Notepad oder ein anderes Textbearbeitungstool.

  2. Definieren Sie den Pfad für den Speicherort der PowerShell Postscript-Datei, das Argument zur Übergabe der DNS-Abfrage und die Exit-Codes.

  3. Speichern Sie die Datei mit der Erweiterung .bat. Achten Sie darauf, den Speicherort zu notieren.

Linux DNS-Skript

Für Linux benötigen Sie ein DNS.sh-Skript, um Ihre Kontrolle über die Domänen zu beweisen:

Ein DNS-Skript erstellen

  1. Öffnen Sie Notepad oder ein anderes Textbearbeitungstool.

  2. Definieren Sie die Anmeldedaten, die DNS-Abfrage und die Exit-Codes.

  3. Speichern Sie die Datei mit der Erweiterung .sh. Achten Sie darauf, den Speicherort zu notieren.

Erstellen Sie eine benutzerdefinierte DNS-Integration

  1. Melden Sie sich beim Sensor-Host an.

  2. Navigieren Sie zum CLI-Verzeichnis des Sensors.

    cd install_dir/cli

    Wobei install_dir das Installationsverzeichnis für den Sensor ist.

  3. Führen Sie den Befehl adddnsintegration aus.

    • Windowsadddnsintegration.bat -type custom

    • Linux./adddnsintegration.sh -type custom

  4. Wenn Sie den Befehl eingeben, erscheint eine Reihe von Eingabeaufforderungen. Geben Sie die Informationen ein, und drücken Sie die Eingabetaste.

Beispiel: ./adddnsintegration.sh -type custom

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

Sensor CLI.  Copyright 2022, 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.

Beispielskripte

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
    #$Change.ResourceRecordSet.ResourceRecords.Add(@{Value=$Value})
    $Change.ResourceRecordSet.ResourceRecords.Add(@{Value=if ($Type -eq "TXT") {"""$Value"""} else {$Value}})
 
    # 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-Skript

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

Anmerkung

%* bestimmt die DNS-Abfrage. Es bezieht seine Werte aus der Postscript.

AWS – DNS.sh-Skript

#!/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-Befehle für die DNS-Integration

Windows- und Linux-Befehle zum Hinzufügen und Konfigurieren von DNS-Integrationen oder Providern zu Sensoren für die Automatisierung von DV-Zertifikaten auf Load Balancern.

Tabelle 4. DNS-Integrationsbefehle

Befehl

Syntax

Beschreibung

Windowsadddnsintegration.bat

adddnsintegration.bat -type {dns_provider_name}

Fügen Sie eine DNS-Integration zur Automatisierung von DV-Zertifikaten hinzu.

Linuxadddnsintegration.sh

./adddnsintegration.sh -type {dns_provider_name}

Windowslistsupporteddns.bat

-

Zeigen Sie die vollständige Liste der unterstützten Systeme an.

Linuxlistsupporteddns.sh

Windowslistdnsintegration.bat

listdnsintegration.bat -type {dns_provider_name}

Zeigen Sie die Liste der mit dem Sensor konfigurierten DNS-Integrationen an.

Linuxlistdnsintegration.sh

./listdnsintegration.sh -type {dns_provider_name}

Windowsupdatednsintegration.bat

updatednsintegration.bat - alias {alias_name}

Aktualisieren Sie die DNS-Integration.

Linuxupdatednsintegration.sh

./updatednsintegration.sh - alias {alias_name}

Windowsdeletednsintegration.bat

deletednsintegration.bat - alias {alias_name}

Löschen Sie die DNS-Integration vom Sensor.

Linuxdeletednsintegration.sh

./deletednsintegration.sh - alias {alias_name}