Skip to main content

Crear una integración de DNS para automatizar los certificados DV en los equilibradores de carga

Antes de que DigiCert pueda emitir un certificado DV, usted debe demostrar que tiene el control de los dominios incluidos en la solicitud del certificado.

Para automatizar la instalaciones de certificados DV, use la integración de DNS para demostrar su control sobre los dominios en su solicitud de certificado DV. Para este método DCV, debe crear una integración de DNS antes de enviar la solicitud.

Su integración de DNS permite a los servicios de automatización de DigiCert usar sus credenciales para realizar el desafío de DNS en el servidor DNS y completa la verificación de validación. El desafío de DNS se genera de manera automática como parte del proceso de automatización. Una vez que la validación del dominio se complete, la automatización se realizará con éxito y se instalará el certificado DV.

Puede crear una integración DNS usando un proveedor de DNS admitido o un script de DNS personalizado.

Ejemplo: Desafíos de DNS

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

Antes de comenzar

Ver proveedores de DNS admitidos para la automatización

  1. Inicie sesión en el host del sensor.

  2. Vaya al directorio de CLI del sensor.

    cd install_dir/cli

    En el cual install_dir es el directorio de instalación para el sensor.

  3. Ejecute el comando listsupporteddns.

    • Windows: listsupporteddns.bat

    • Linux: ./listsupporteddns.sh

Esta es una lista de proveedores de DNS admitidos para la automatización.

tabla 1. Proveedores de DNS

Amazon Route 53

Azure

Cloudflare

CloudXNS

DreamHost

Digital Ocean

GoogleDNS

Go Daddy

NS1

OVH

RFC2136

Sakura Cloud



Crear una integración de DNS con un proveedor de DNS

  1. Inicie sesión en el host del sensor.

  2. Vaya al directorio de CLI del sensor.

    cd install_dir/cli

    En el cual install_dir es el directorio de instalación para el sensor.

  3. Ejecute el comando adddnsintegration.

    • Windowsadddnsintegration.bat -type <dns_provider_name>

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

  4. Cuando ingresa el comando, aparece una serie de indicaciones para cada proveedor. Brinde la información y presione Intro.

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

Crear una integración de DNS con un script de DNS personalizado

Antes de comenzar

Antes de comenzar, cree un script de DNS para el sistema operativo para el que desea automatizar la instalación de certificados DV. Puede creer un script o modificar uno de los script de muestra para definir su script.

Importante

DigiCert recomienda colocar los scripts en una ubicación predeterminada, como el directorio de instalación del sensor. Por ejemplo: sensorinstalldir/localscripts/script-to-upload.bat

Scripts de DNS de Windows

Para Windows, necesita dos scripts para demostrar su control sobre los dominios: Script .bat de DNS y el postscript PowerShell integrado (.ps1.py.ps o cualquier otro formato).

Crear un postscript PowerShell de DNS integrado

  1. Abra Notepad o cualquier otra herramienta de edición de texto.

  2. Defina las credenciales de inicio de sesión, el desafío de DNS y los códigos de salida.

  3. Guarde el archivo con .ps1.py.ps o cualquier otra extensión de su elección. Asegúrese de tomar nota de la ubicación.

Crear un script de DNS

  1. Abra Notepad o cualquier otra herramienta de edición de texto.

  2. Defina la ruta de ubicación del archivo de postscript de PowerShell, el argumento para superar el desafío de DNS y los códigos de salida.

  3. Guarde el archivo con la extensión .bat. Asegúrese de tomar nota de la ubicación.

Script de DNS de Linux

Para Linux, necesita un script DNS .sh para demostrar el control sobre los dominios.

Crear un script de DNS

  1. Abra Notepad o cualquier otra herramienta de edición de texto.

  2. Defina las credenciales de inicio de sesión, el desafío de DNS y los códigos de salida.

  3. Guarde el archivo con la extensión .sh. Asegúrese de tomar nota de la ubicación.

Crear una integración de DNS personalizada

  1. Inicie sesión en el host del sensor.

  2. Vaya al directorio de CLI del sensor.

    cd install_dir/cli

    En el cual install_dir es el directorio de instalación para el sensor.

  3. Ejecute el comando adddnsintegration.

    • Windowsadddnsintegration.bat -type custom

    • Linux./adddnsintegration.sh -type custom

  4. Cuando ingresa el comando, aparece una serie de indicaciones. Brinde la información y presione Intro.

Ejemplo: ./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 salida

Cada programa que usted empieza termina con un código de salida y se reporta al sistema operativo. Un código de salida, o a veces conocido como un código de retorno, es el código que un ejecutable devuelve a un proceso primario.

tabla 2. Códigos de salida

Código de salida

Descripción

0

Ejecución correcta del script.

1

Error en la ejecución del script por cualquier razón.



Scripts de muestra

AWS, postscript de 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 .bat de DNS

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

Nota

%* determina el desafío de DNS. Recupera su valor del postscript.

AWS, script .sh de DNS

#!/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 integración de DNS

Comandos de Windows y Linux para agregar y configurar las integraciones o proveedores de DNS para sensores para la automatización de certificados DV en equilibradores de carga.

tabla 3. Comandos de integración de DNS

Comando

Sintaxis

Descripción

Windowsadddnsintegration.bat

adddnsintegration.bat -type {dns_provider_name}

Agregar una integración de DNS para automatizar los certificados DV.

Linuxadddnsintegration.sh

./adddnsintegration.sh -type {dns_provider_name}

Windowslistsupporteddns.bat

-

Ver la lista completa de proveedores de DNS admitidos.

Linuxlistsupporteddns.sh

Windowslistdnsintegration.bat

listdnsintegration.bat -type {dns_provider_name}

Ver la lista de integraciones de DNS configuradas con el sensor.

Linuxlistdnsintegration.sh

./listdnsintegration.sh -type {dns_provider_name}

Windowsupdatednsintegration.bat

updatednsintegration.bat - alias {alias_name}

Actualizar la integración de DNS.

Linuxupdatednsintegration.sh

./updatednsintegration.sh - alias {alias_name}

Windowsdeletednsintegration.bat

deletednsintegration.bat - alias {alias_name}

Eliminar la integración de DNS desde el sensor.

Linuxdeletednsintegration.sh

./deletednsintegration.sh - alias {alias_name}



Crear una integración de DNS con un script de DNS personalizado

Antes de comenzar

Antes de comenzar, cree un script de DNS para el sistema operativo para el que desea automatizar la instalación de certificados DV. Puede creer un script o modificar uno de los script de muestra para definir su script.

Importante

DigiCert recomienda colocar los scripts en una ubicación predeterminada, como el directorio de instalación del sensor. Por ejemplo: sensorinstalldir/localscripts/script-to-upload.bat

Scripts de DNS de Windows

Para Windows, necesita dos scripts para demostrar su control sobre los dominios: Script .bat de DNS y el postscript PowerShell integrado (.ps1.py.ps o cualquier otro formato).

Crear un postscript PowerShell de DNS integrado

  1. Abra Notepad o cualquier otra herramienta de edición de texto.

  2. Defina las credenciales de inicio de sesión, el desafío de DNS y los códigos de salida.

  3. Guarde el archivo con .ps1.py.ps o cualquier otra extensión de su elección. Asegúrese de tomar nota de la ubicación.

Crear un script de DNS

  1. Abra Notepad o cualquier otra herramienta de edición de texto.

  2. Defina la ruta de ubicación del archivo de postscript de PowerShell, el argumento para superar el desafío de DNS y los códigos de salida.

  3. Guarde el archivo con la extensión .bat. Asegúrese de tomar nota de la ubicación.

Script de DNS de Linux

Para Linux, necesita un script DNS .sh para demostrar el control sobre los dominios.

Crear un script de DNS

  1. Abra Notepad o cualquier otra herramienta de edición de texto.

  2. Defina las credenciales de inicio de sesión, el desafío de DNS y los códigos de salida.

  3. Guarde el archivo con la extensión .sh. Asegúrese de tomar nota de la ubicación.

Crear una integración de DNS personalizada

  1. Inicie sesión en el host del sensor.

  2. Vaya al directorio de CLI del sensor.

    cd install_dir/cli

    En el cual install_dir es el directorio de instalación para el sensor.

  3. Ejecute el comando adddnsintegration.

    • Windowsadddnsintegration.bat -type custom

    • Linux./adddnsintegration.sh -type custom

  4. Cuando ingresa el comando, aparece una serie de indicaciones. Brinde la información y presione Intro.

Ejemplo: ./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 muestra

AWS, postscript de 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 .bat de DNS

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

Nota

%* determina el desafío de DNS. Recupera su valor del postscript.

AWS, script .sh de DNS

#!/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 integración de DNS

Comandos de Windows y Linux para agregar y configurar las integraciones o proveedores de DNS para sensores para la automatización de certificados DV en equilibradores de carga.

tabla 4. Comandos de integración de DNS

Comando

Sintaxis

Descripción

Windowsadddnsintegration.bat

adddnsintegration.bat -type {dns_provider_name}

Agregar una integración de DNS para automatizar los certificados DV.

Linuxadddnsintegration.sh

./adddnsintegration.sh -type {dns_provider_name}

Windowslistsupporteddns.bat

-

Ver la lista completa de proveedores de DNS admitidos.

Linuxlistsupporteddns.sh

Windowslistdnsintegration.bat

listdnsintegration.bat -type {dns_provider_name}

Ver la lista de integraciones de DNS configuradas con el sensor.

Linuxlistdnsintegration.sh

./listdnsintegration.sh -type {dns_provider_name}

Windowsupdatednsintegration.bat

updatednsintegration.bat - alias {alias_name}

Actualizar la integración de DNS.

Linuxupdatednsintegration.sh

./updatednsintegration.sh - alias {alias_name}

Windowsdeletednsintegration.bat

deletednsintegration.bat - alias {alias_name}

Eliminar la integración de DNS desde el sensor.

Linuxdeletednsintegration.sh

./deletednsintegration.sh - alias {alias_name}