Skip to main content

Créer une intégration DNS pour automatiser les certificats DV sur les équilibreurs de charge :

Avant que DigiCert puisse émettre un certificat DV, vous devez prouver que vous contrôlez les domaines inclus dans la demande de certificat.

Pour automatiser l'installation de certificats DV, utilisez l’intégration DNS pour prouver que vous contrôlez les domaines de votre demande de certificats DV. Pour cette méthode de DCV, vous devez créer une intégration DNS avant de soumettre la demande.

Votre intégration DNS permet aux services d'automatisation de DigiCert d’utiliser vos identifiants pour passer le challenge DNS sur le serveur DNS et finaliser la validation. Le challenge DNS est généré automatiquement dans le cadre de la procédure d'automatisation. Une fois la validation de domaine effectuée, l’automatisation installera correctement le certificat DV.

Vous pouvez créer une intégration DNS en utilisant un fournisseur DNS compatible ou un script DNS personnalisé.

Exemple : Challenge DNS

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

Avant de commencer

Voir les fournisseurs DNS compatibles avec l’automatisation

  1. Connectez-vous à l'hôte du capteur

  2. Rendez-vous dans le répertoire de ligne de commande du capteur.

    cd install_dir/cli

    Où install_dir correspond au répertoire d'installation du capteur.

  3. Exécutez la commande listsupporteddns.

    • Windows : listsupporteddns.bat

    • Linux : ./listsupporteddns.sh

Voici la liste des fournisseurs de DNS compatibles avec l’automatisation.

Tableau 1. Fournisseurs DNS

Amazon Route 53

Azure

Cloudflare

CloudXNS

DreamHost

Digital Ocean

GoogleDNS

Go Daddy

NS1

OVH

RFC2136

Sakura Cloud



Créez une intégration DNS avec un fournisseur de DNS

  1. Connectez-vous à l'hôte du capteur

  2. Rendez-vous dans le répertoire de ligne de commande du capteur.

    cd install_dir/cli

    Où install_dir correspond au répertoire d'installation du capteur.

  3. Exécutez la commande adddnsintegration.

    • Windowsadddnsintegration.bat -type <dns_provider_name>

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

  4. Lorsque vous lancez la commande, une série d'invites apparaît pour chaque fournisseur. Saisissez les informations et appuyez sur Entrée.

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

Créer une intégration DNS avec un script DNS personnalisé

Avant de commencer

Avant de démarrer, créez un script DNS pour le système d’exploitation pour lequel vous souhaitez automatiser l’installation de certificats DV. Vous pouvez créer un script ou modifier l’un des exemples de script pour définir le vôtre

Important

DigiCert recommande de placer les scripts dans un emplacement par défaut, par exemple le répertoire d'installation du capteur. Par exemple : sensorinstalldir/localscripts/script-to-upload.bat

Scripts DNS pour Windows

Sous Windows, vous avez besoin de deux scripts pour prouver que vous contrôlez les domaines : Un script DNS .bat et un postscript PowerShell intégré (.ps1.py.ps, ou tout autre format).

Créer un postscript PowerShell DNS intégré

  1. Ouvrez Notepad ou autre éditeur texte de votre choix.

  2. Définissez les identifiants de connexion, le challenge DNS et les codes de sortie.

  3. Enregistrez le fichier avec une extension .ps1.py.ps, ou autre extension de votre choix. Assurez-vous de bien en noter l’emplacement.

Créer un script DNS

  1. Ouvrez Notepad ou autre éditeur texte de votre choix.

  2. Définissez le chemin du fichier postscript PowerShell, l’argument pour passer le challenge DNS, et les codes de sortie.

  3. Enregistrez le fichier avec l’extension .bat. Assurez-vous de bien en noter l’emplacement.

Script DNS pour Linux

Sous Linux, vous avez besoin d'un script DNS .sh pour prouver que vous contrôlez les domaines.

Créer un script DNS

  1. Ouvrez Notepad ou autre éditeur texte de votre choix.

  2. Définissez les identifiants de connexion, le challenge DNS et les codes de sortie.

  3. Enregistrez le fichier avec une extension .sh. Assurez-vous de bien en noter l’emplacement.

Créer une intégration DNS personnalisée

  1. Connectez-vous à l'hôte du capteur

  2. Rendez-vous dans le répertoire de ligne de commande du capteur.

    cd install_dir/cli

    Où install_dir correspond au répertoire d'installation du capteur.

  3. Exécutez la commande adddnsintegration.

    • Windowsadddnsintegration.bat -type custom

    • Linux./adddnsintegration.sh -type custom

  4. Lorsque vous lancez la commande, une série d'invites apparaît. Saisissez les informations et appuyez sur Entrée.

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

Codes de sortie

Tout programme démarré transmet un code de sortie au système d’exploitation lorsqu’il est fermé. Un code de sortie, parfois appelé code de renvoi, est le code qu'un exécutable renvoie à son processus parent.

Tableau 2. Codes de sortie

Code de sortie

Description

0

Exécution du script réussie.

1

Échec de l’exécution du script pour quelque raison que ce soit.



Exemples de scripts

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%

Note

%* détermine le challenge DNS. Il récupère la valeur dans le 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

Commandes CLI d'intégration DNS

Commandes Windows et Linux pour l’ajout et la configuration d'intégrations ou de fournisseurs DNS aux capteurs, en vue d'automatiser des certificats DV sur des équilibreurs de charge.

Tableau 3. Commandes d’intégration DNS

Commande

Syntaxe

Description

Windowsadddnsintegration.bat

adddnsintegration.bat -type {dns_provider_name}

Ajouter une intégration DNS pour automatiser les certificats DV.

Linuxadddnsintegration.sh

./adddnsintegration.sh -type {dns_provider_name}

Windowslistsupporteddns.bat

-

Afficher la liste complète des fournisseurs de DNS pris en charge ci-dessous.

Linuxlistsupporteddns.sh

Windowslistdnsintegration.bat

listdnsintegration.bat -type {dns_provider_name}

Voir la liste des intégrations DNS configurées avec le capteur.

Linuxlistdnsintegration.sh

./listdnsintegration.sh -type {dns_provider_name}

Windowsupdatednsintegration.bat

updatednsintegration.bat - alias {alias_name}

Mettre à jour l’intégration DNS.

Linuxupdatednsintegration.sh

./updatednsintegration.sh - alias {alias_name}

Windowsdeletednsintegration.bat

deletednsintegration.bat - alias {alias_name}

Supprimer l’intégration DNS du capteur.

Linuxdeletednsintegration.sh

./deletednsintegration.sh - alias {alias_name}



Créer une intégration DNS avec un script DNS personnalisé

Avant de commencer

Avant de démarrer, créez un script DNS pour le système d’exploitation pour lequel vous souhaitez automatiser l’installation de certificats DV. Vous pouvez créer un script ou modifier l’un des exemples de script pour définir le vôtre

Important

DigiCert recommande de placer les scripts dans un emplacement par défaut, par exemple le répertoire d'installation du capteur. Par exemple : sensorinstalldir/localscripts/script-to-upload.bat

Scripts DNS pour Windows

Sous Windows, vous avez besoin de deux scripts pour prouver que vous contrôlez les domaines : Un script DNS .bat et un postscript PowerShell intégré (.ps1.py.ps, ou tout autre format).

Créer un postscript PowerShell DNS intégré

  1. Ouvrez Notepad ou autre éditeur texte de votre choix.

  2. Définissez les identifiants de connexion, le challenge DNS et les codes de sortie.

  3. Enregistrez le fichier avec une extension .ps1.py.ps, ou autre extension de votre choix. Assurez-vous de bien en noter l’emplacement.

Créer un script DNS

  1. Ouvrez Notepad ou autre éditeur texte de votre choix.

  2. Définissez le chemin du fichier postscript PowerShell, l’argument pour passer le challenge DNS, et les codes de sortie.

  3. Enregistrez le fichier avec l’extension .bat. Assurez-vous de bien en noter l’emplacement.

Script DNS pour Linux

Sous Linux, vous avez besoin d'un script DNS .sh pour prouver que vous contrôlez les domaines.

Créer un script DNS

  1. Ouvrez Notepad ou autre éditeur texte de votre choix.

  2. Définissez les identifiants de connexion, le challenge DNS et les codes de sortie.

  3. Enregistrez le fichier avec une extension .sh. Assurez-vous de bien en noter l’emplacement.

Créer une intégration DNS personnalisée

  1. Connectez-vous à l'hôte du capteur

  2. Rendez-vous dans le répertoire de ligne de commande du capteur.

    cd install_dir/cli

    Où install_dir correspond au répertoire d'installation du capteur.

  3. Exécutez la commande adddnsintegration.

    • Windowsadddnsintegration.bat -type custom

    • Linux./adddnsintegration.sh -type custom

  4. Lorsque vous lancez la commande, une série d'invites apparaît. Saisissez les informations et appuyez sur Entrée.

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

Exemples de scripts

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%

Note

%* détermine le challenge DNS. Il récupère la valeur dans le 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

Commandes CLI d'intégration DNS

Commandes Windows et Linux pour l’ajout et la configuration d'intégrations ou de fournisseurs DNS aux capteurs, en vue d'automatiser des certificats DV sur des équilibreurs de charge.

Tableau 4. Commandes d’intégration DNS

Commande

Syntaxe

Description

Windowsadddnsintegration.bat

adddnsintegration.bat -type {dns_provider_name}

Ajouter une intégration DNS pour automatiser les certificats DV.

Linuxadddnsintegration.sh

./adddnsintegration.sh -type {dns_provider_name}

Windowslistsupporteddns.bat

-

Afficher la liste complète des fournisseurs de DNS pris en charge ci-dessous.

Linuxlistsupporteddns.sh

Windowslistdnsintegration.bat

listdnsintegration.bat -type {dns_provider_name}

Voir la liste des intégrations DNS configurées avec le capteur.

Linuxlistdnsintegration.sh

./listdnsintegration.sh -type {dns_provider_name}

Windowsupdatednsintegration.bat

updatednsintegration.bat - alias {alias_name}

Mettre à jour l’intégration DNS.

Linuxupdatednsintegration.sh

./updatednsintegration.sh - alias {alias_name}

Windowsdeletednsintegration.bat

deletednsintegration.bat - alias {alias_name}

Supprimer l’intégration DNS du capteur.

Linuxdeletednsintegration.sh

./deletednsintegration.sh - alias {alias_name}