Skip to main content

Crie uma integração DNS para automatizar certificados DV em balanceadores de carga

Antes que a DigiCert possa emitir um certificado DV, você deve demonstrar controle sobre os domínios incluídos na solicitação de certificado.

Para automatizar a instalação do certificado DV, use a integração DNS para provar seu controle sobre os domínios em sua solicitação de certificado DV. Para este método DCV, você deve criar uma integração DNS antes de enviar a solicitação.

Sua integração DNS permite que os serviços de automação da DigiCert usem suas credenciais para colocar o desafio DNS no servidor DNS e concluir a verificação de validação. O desafio DNS é gerado automaticamente como parte do processo de automação. Depois que a validação do domínio for concluída, a automação será bem-sucedida e instalará o certificado DV.

Você pode criar uma integração de DNS usando um provedor de DNS compatível ou um script de DNS personalizado.

Exemplo: Desafio DNS

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

Antes de começar

Visualize provedores de DNS compatíveis com automação

  1. Faça login no host do sensor.

  2. Vá para o diretório CLI do sensor.

    cd install_dir/cli

    Onde install_dir é o diretório de instalação do sensor.

  3. Execute o comando listsupporteddns.

    • Windows: listsupporteddns.bat

    • Linux: ./listsupporteddns.sh

Aqui está a lista de provedores de DNS com suporte para automação.

Tabela 1. Provedores de DNS

Rota 53 da Amazônia

Azure

Cloudflare

CloudXNS

DreamHost

Digital Ocean

GoogleDNS

Go Daddy

NS1

OVH

RFC2136

Sakura Cloud



Criar uma integração de DNS com um provedor de DNS

  1. Faça login no host do sensor.

  2. Vá para o diretório CLI do sensor.

    cd install_dir/cli

    Onde install_dir é o diretório de instalação do sensor.

  3. Execute o comando adddnsintegration.

    • Windowsadddnsintegration.bat -type <dns_provider_name>

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

  4. Quando você digita o comando, uma série de prompts é exibida para cada provedor. Forneça as informações e pressione Enter.

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

Criar uma integração DNS com um script DNS personalizado

Antes de começar

Antes de começar, crie um script DNS para o sistema operacional que você deseja automatizar a instalação do certificado DV. Você pode criar um script ou modificar um dos scripts de amostra para definir seu script.

Importante

A DigiCert recomenda colocar os scripts em um local padrão, como o diretório de instalação do sensor. Por exemplo: sensorinstalldir/localscripts/script-to-upload.bat

Scripts DNS do Windows

Para Windows, você precisa de dois scripts para provar seu controle sobre os domínios: Script DNS .bat script e postscript PowerShell incorporado (.ps1.py.ps ou qualquer outro formato).

Criar postscript de DNS PowerShell incorporado

  1. Abra o Bloco de Notas ou qualquer outra ferramenta de edição de texto.

  2. Defina as credenciais de login, desafio de DNS e códigos de saída.

  3. Salve o arquivo com .ps1.py.ps ou qualquer outra extensão de sua escolha. Certifique-se de anotar o local.

Criar script DNS

  1. Abra o Bloco de Notas ou qualquer outra ferramenta de edição de texto.

  2. Defina o caminho do local do arquivo postscript do PowerShell, o argumento para passar o desafio DNS e os códigos de saída.

  3. Salve o arquivo com a extensão .bat. Certifique-se de anotar o local.

Script DNS do Linux

Para Linux, você precisa de um script DNS .sh para comprovar o controle sobre os domínios.

Criar um script DNS

  1. Abra o Bloco de Notas ou qualquer outra ferramenta de edição de texto.

  2. Defina as credenciais de login, desafio de DNS e códigos de saída.

  3. Salve o arquivo com a extensão .sh. Certifique-se de anotar o local.

Criar uma integração DNS personalizada

  1. Faça login no host do sensor.

  2. Vá para o diretório CLI do sensor.

    cd install_dir/cli

    Onde install_dir é o diretório de instalação do sensor.

  3. Execute o comando adddnsintegration.

    • Windowsadddnsintegration.bat -type custom

    • Linux./adddnsintegration.sh -type custom

  4. Quando você digita o comando, uma série de prompts é exibida. Forneça as informações e pressione Enter.

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

Códigos de saída

Cada programa que você inicia termina com um código de saída e o reporta ao sistema operacional. Um código de saída, ou às vezes conhecido como código de retorno, é o código retornado a um processo pai por um executável.

Tabela 2. Códigos de saída

Código de saída

Descrição

0

Execução bem-sucedida do script.

1

Falha ao executar o script por qualquer motivo.



Scripts de amostra

AWS - Postscript DNS PowerShell (.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 o desafio do DNS. Ele recupera seus valores do postscript.

AWS - script 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

Comandos de CLI de integração de DNS

Comandos Windows e Linux para adicionar e configurar integrações ou provedores de DNS a sensores para automação de certificados DV em balanceadores de carga.

Tabela 3. Comandos de integração DNS

Comando

Sintaxe

Descrição

Windowsadddnsintegration.bat

adddnsintegration.bat -type {dns_provider_name}

Adicione uma integração DNS para automatizar certificados DV.

Linuxadddnsintegration.sh

./adddnsintegration.sh -type {dns_provider_name}

Windowslistsupporteddns.bat

-

Veja a lista completa de provedores de DNS suportados.

Linuxlistsupporteddns.sh

Windowslistdnsintegration.bat

listdnsintegration.bat -type {dns_provider_name}

Veja a lista de integrações DNS configuradas com o sensor.

Linuxlistdnsintegration.sh

./listdnsintegration.sh -type {dns_provider_name}

Windowsupdatednsintegration.bat

updatednsintegration.bat - alias {alias_name}

Atualize a integração DNS.

Linuxupdatednsintegration.sh

./updatednsintegration.sh - alias {alias_name}

Windowsdeletednsintegration.bat

deletednsintegration.bat - alias {alias_name}

Exclua a integração DNS do sensor.

Linuxdeletednsintegration.sh

./deletednsintegration.sh - alias {alias_name}



Criar uma integração DNS com um script DNS personalizado

Antes de começar

Antes de começar, crie um script DNS para o sistema operacional que você deseja automatizar a instalação do certificado DV. Você pode criar um script ou modificar um dos scripts de amostra para definir seu script.

Importante

A DigiCert recomenda colocar os scripts em um local padrão, como o diretório de instalação do sensor. Por exemplo: sensorinstalldir/localscripts/script-to-upload.bat

Scripts DNS do Windows

Para Windows, você precisa de dois scripts para provar seu controle sobre os domínios: Script DNS .bat script e postscript PowerShell incorporado (.ps1.py.ps ou qualquer outro formato).

Criar postscript de DNS PowerShell incorporado

  1. Abra o Bloco de Notas ou qualquer outra ferramenta de edição de texto.

  2. Defina as credenciais de login, desafio de DNS e códigos de saída.

  3. Salve o arquivo com .ps1.py.ps ou qualquer outra extensão de sua escolha. Certifique-se de anotar o local.

Criar script DNS

  1. Abra o Bloco de Notas ou qualquer outra ferramenta de edição de texto.

  2. Defina o caminho do local do arquivo postscript do PowerShell, o argumento para passar o desafio DNS e os códigos de saída.

  3. Salve o arquivo com a extensão .bat. Certifique-se de anotar o local.

Script DNS do Linux

Para Linux, você precisa de um script DNS .sh para comprovar o controle sobre os domínios.

Criar um script DNS

  1. Abra o Bloco de Notas ou qualquer outra ferramenta de edição de texto.

  2. Defina as credenciais de login, desafio de DNS e códigos de saída.

  3. Salve o arquivo com a extensão .sh. Certifique-se de anotar o local.

Criar uma integração DNS personalizada

  1. Faça login no host do sensor.

  2. Vá para o diretório CLI do sensor.

    cd install_dir/cli

    Onde install_dir é o diretório de instalação do sensor.

  3. Execute o comando adddnsintegration.

    • Windowsadddnsintegration.bat -type custom

    • Linux./adddnsintegration.sh -type custom

  4. Quando você digita o comando, uma série de prompts é exibida. Forneça as informações e pressione Enter.

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

Scripts de amostra

AWS - Postscript DNS PowerShell (.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 o desafio do DNS. Ele recupera seus valores do postscript.

AWS - script 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

Comandos de CLI de integração de DNS

Comandos Windows e Linux para adicionar e configurar integrações ou provedores de DNS a sensores para automação de certificados DV em balanceadores de carga.

Tabela 4. Comandos de integração DNS

Comando

Sintaxe

Descrição

Windowsadddnsintegration.bat

adddnsintegration.bat -type {dns_provider_name}

Adicione uma integração DNS para automatizar certificados DV.

Linuxadddnsintegration.sh

./adddnsintegration.sh -type {dns_provider_name}

Windowslistsupporteddns.bat

-

Veja a lista completa de provedores de DNS suportados.

Linuxlistsupporteddns.sh

Windowslistdnsintegration.bat

listdnsintegration.bat -type {dns_provider_name}

Veja a lista de integrações DNS configuradas com o sensor.

Linuxlistdnsintegration.sh

./listdnsintegration.sh -type {dns_provider_name}

Windowsupdatednsintegration.bat

updatednsintegration.bat - alias {alias_name}

Atualize a integração DNS.

Linuxupdatednsintegration.sh

./updatednsintegration.sh - alias {alias_name}

Windowsdeletednsintegration.bat

deletednsintegration.bat - alias {alias_name}

Exclua a integração DNS do sensor.

Linuxdeletednsintegration.sh

./deletednsintegration.sh - alias {alias_name}