Skip to main content

Crea un’integrazione DNS per automatizzare i certificati DV sui bilanciamenti del carico

Prima che DigiCert possa emettere un certificato DV, devi dimostrare il controllo sui domini inclusi nella richiesta di certificato.

Per automatizzare l’installazione del certificato DV, usa l’integrazione DNS per dimostrare il controllo sui domini nella tua richiesta di certificato DV. Per questo metodo DCV, devi creare un’integrazione DNS prima di inviare la richiesta.

La tua integrazione DNS consente ai servizio di automazione DigiCert di utilizzare le tue credenziali per posizionare la DNS challenge sul server DNS e completare il controllo convalida. La DNS challenge viene generata automaticamente come parte del processo di automazione. Una volta completata la convalida dominio, l’automazione si completerà correttamente e installerà il certificato DV.

Puoi creare un’integrazione DNS usando un DNS provider supportato o uno script DNS personalizzato.

Esempio: DNS challenge

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

Prima di iniziare

Visualizza i provider DNS supportati da automazione

  1. Accedi all’host sensore.

  2. Vai alla directory CLI sensore.

    cd install_dir/cli

    Dove install_dir è la directory di installazione per il sensore.

  3. Esegui il comando listsupporteddns.

    • Windows: listsupporteddns.bat

    • Linux: ./listsupporteddns.sh

Ecco l’elenco dei provider DNS supportati da automazione.

Tabella 1. Provider DNS

Amazon Route 53

Azure

Cloudflare

CloudXNS

DreamHost

Digital Ocean

GoogleDNS

Go Daddy

NS1

OVH

RFC2136

Sakura Cloud



Crea un’integrazione DNS con un provider DNS

  1. Accedi all’host sensore.

  2. Vai alla directory CLI sensore.

    cd install_dir/cli

    Dove install_dir è la directory di installazione per il sensore.

  3. Esegui il comando adddnsintegration.

    • Windowsadddnsintegration.bat -type <dns_provider_name>

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

  4. Quando inserisci il comando, compare una serie di messaggi per ciascun provider. Fornisci le informazioni e premi Invio.

Esempio: 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.

Crea un’integrazione DNS con uno script DNS personalizzato

Prima di iniziare

Prima di iniziare, crea uno script DNS per il sistema operativo che vuoi per automatizzare l’installazione del certificato DV. Puoi creare uno script o modificare uno degli script campione per definire il tuo script.

Importante

DigiCert raccomanda di posizionare gli script in un posizione predefinita, come la directory di installazione del sensore. Ad esempio: sensorinstalldir/localscripts/script-to-upload.bat

Script DNS Windows

Per Windows, ti servono due script per dimostrare il controllo sui domini: Lo script DNS .bat e il postscript PowerShell nidificato (.ps1.py.ps o qualsiasi altro formato).

Crea il postscript PowerShell DNS nidificato

  1. Apri Notepad o qualsiasi altro strumento di modifica testo.

  2. Definisci le credenziali di login, DNS challenge e i codici di uscita.

  3. Salva il file con .ps1.py.ps o qualsiasi altra estensione a scelta. Annota la posizione.

Crea script DNS

  1. Apri Notepad o qualsiasi altro strumento di modifica testo.

  2. Definisci il percorso della posizione del file di postscript PowerShell, l’argomento per superare la DNS challenge e i codici di uscita.

  3. Salva il file con l’estensione .bat. Annota la posizione.

Script DNS Linux

Per Linux, ti serve uno script DNS .sh per dimostrare il controllo sui domini.

Crea uno script DNS

  1. Apri Notepad o qualsiasi altro strumento di modifica testo.

  2. Definisci le credenziali di login, DNS challenge e i codici di uscita.

  3. Salva il file con l’estensione .sh. Annota la posizione.

Crea un’integrazione DNS personalizzata

  1. Accedi all’host sensore.

  2. Vai alla directory CLI sensore.

    cd install_dir/cli

    Dove install_dir è la directory di installazione per il sensore.

  3. Esegui il comando adddnsintegration.

    • Windowsadddnsintegration.bat -type custom

    • Linux./adddnsintegration.sh -type custom

  4. Quando inserisci il comando, compare una serie di messaggi. Fornisci le informazioni e premi Invio.

Esempio: ./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.

Codici di uscita

Ciascun programma che avvii termina con un codice di uscita e lo segnala la sistema operativo. Un codice di uscita, talvolta noto come codice di ritorno, è il codice restituito ad un processo principale da parte di un eseguibile.

Tabella 2. Codici di uscita

Codice di uscita

Descrizione

0

Esecuzione corretta dello script.

1

Impossibile eseguire lo script per qualsiasi motivo.



Script campione

AWS - Postscript PowerShell DNS (.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"

Script DNS .bat

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

Nota

%* determina la DNS challenge. Recupera il suo valore dal postscript.

Script AWS - DNS .sh

#!/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

Comandi CLI di integrazione DNS

I comandi Window e Linux per l’aggiunta e la configurazione delle integrazioni DNS o dei provider ai sensori per l’automazione dei certificati DV sui bilanciamenti del carico.

Tabella 3. Comandi di integrazione DNS

Comando

Sintassi

Descrizione

Windowsadddnsintegration.bat

adddnsintegration.bat -type {dns_provider_name}

Aggiungi un’integrazione DNS per automatizzare i certificati DV.

Linuxadddnsintegration.sh

./adddnsintegration.sh -type {dns_provider_name}

Windowslistsupporteddns.bat

-

Visualizza l’elenco completo dei providers DNS supportati.

Linuxlistsupporteddns.sh

Windowslistdnsintegration.bat

listdnsintegration.bat -type {dns_provider_name}

Visualizza l’elenco delle integrazioni DNS configurate con il sensore.

Linuxlistdnsintegration.sh

./listdnsintegration.sh -type {dns_provider_name}

Windowsupdatednsintegration.bat

updatednsintegration.bat - alias {alias_name}

Aggiorna l’integrazione DNS.

Linuxupdatednsintegration.sh

./updatednsintegration.sh - alias {alias_name}

Windowsdeletednsintegration.bat

deletednsintegration.bat - alias {alias_name}

Elimina l’integrazione DNS dal sensore.

Linuxdeletednsintegration.sh

./deletednsintegration.sh - alias {alias_name}



Crea un’integrazione DNS con uno script DNS personalizzato

Prima di iniziare

Prima di iniziare, crea uno script DNS per il sistema operativo che vuoi per automatizzare l’installazione del certificato DV. Puoi creare uno script o modificare uno degli script campione per definire il tuo script.

Importante

DigiCert raccomanda di posizionare gli script in un posizione predefinita, come la directory di installazione del sensore. Ad esempio: sensorinstalldir/localscripts/script-to-upload.bat

Script DNS Windows

Per Windows, ti servono due script per dimostrare il controllo sui domini: Lo script DNS .bat e il postscript PowerShell nidificato (.ps1.py.ps o qualsiasi altro formato).

Crea il postscript PowerShell DNS nidificato

  1. Apri Notepad o qualsiasi altro strumento di modifica testo.

  2. Definisci le credenziali di login, DNS challenge e i codici di uscita.

  3. Salva il file con .ps1.py.ps o qualsiasi altra estensione a scelta. Annota la posizione.

Crea script DNS

  1. Apri Notepad o qualsiasi altro strumento di modifica testo.

  2. Definisci il percorso della posizione del file di postscript PowerShell, l’argomento per superare la DNS challenge e i codici di uscita.

  3. Salva il file con l’estensione .bat. Annota la posizione.

Script DNS Linux

Per Linux, ti serve uno script DNS .sh per dimostrare il controllo sui domini.

Crea uno script DNS

  1. Apri Notepad o qualsiasi altro strumento di modifica testo.

  2. Definisci le credenziali di login, DNS challenge e i codici di uscita.

  3. Salva il file con l’estensione .sh. Annota la posizione.

Crea un’integrazione DNS personalizzata

  1. Accedi all’host sensore.

  2. Vai alla directory CLI sensore.

    cd install_dir/cli

    Dove install_dir è la directory di installazione per il sensore.

  3. Esegui il comando adddnsintegration.

    • Windowsadddnsintegration.bat -type custom

    • Linux./adddnsintegration.sh -type custom

  4. Quando inserisci il comando, compare una serie di messaggi. Fornisci le informazioni e premi Invio.

Esempio: ./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.

Script campione

AWS - Postscript PowerShell DNS (.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"

Script DNS .bat

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

Nota

%* determina la DNS challenge. Recupera il suo valore dal postscript.

Script AWS - DNS .sh

#!/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

Comandi CLI di integrazione DNS

I comandi Window e Linux per l’aggiunta e la configurazione delle integrazioni DNS o dei provider ai sensori per l’automazione dei certificati DV sui bilanciamenti del carico.

Tabella 4. Comandi di integrazione DNS

Comando

Sintassi

Descrizione

Windowsadddnsintegration.bat

adddnsintegration.bat -type {dns_provider_name}

Aggiungi un’integrazione DNS per automatizzare i certificati DV.

Linuxadddnsintegration.sh

./adddnsintegration.sh -type {dns_provider_name}

Windowslistsupporteddns.bat

-

Visualizza l’elenco completo dei providers DNS supportati.

Linuxlistsupporteddns.sh

Windowslistdnsintegration.bat

listdnsintegration.bat -type {dns_provider_name}

Visualizza l’elenco delle integrazioni DNS configurate con il sensore.

Linuxlistdnsintegration.sh

./listdnsintegration.sh -type {dns_provider_name}

Windowsupdatednsintegration.bat

updatednsintegration.bat - alias {alias_name}

Aggiorna l’integrazione DNS.

Linuxupdatednsintegration.sh

./updatednsintegration.sh - alias {alias_name}

Windowsdeletednsintegration.bat

deletednsintegration.bat - alias {alias_name}

Elimina l’integrazione DNS dal sensore.

Linuxdeletednsintegration.sh

./deletednsintegration.sh - alias {alias_name}