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
Vérifiez que l'équilibreur de charge ciblé a été ajouté au capteur. Consultez Vérifier et finaliser la configuration de votre capteur.
Utilisez un fournisseur de DNS compatible. Consultez Voir les fournisseurs DNS compatibles avec l’automatisation ci-dessous.
Voir les fournisseurs DNS compatibles avec l’automatisation
Connectez-vous à l'hôte du capteur
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.
Exécutez la commande
listsupporteddns
.Windows :
listsupporteddns.bat
Linux :
./listsupporteddns.sh
Voici la liste des fournisseurs de DNS compatibles avec l’automatisation.
Amazon Route 53 |
Azure |
Cloudflare |
CloudXNS |
Digital Ocean |
DNS Trust Manager (DNS Made Easy) |
DreamHost |
GoogleDNS |
Go Daddy |
NS1 |
OVH |
RFC2136 |
Sakura Cloud |
Créez une intégration DNS avec un fournisseur de DNS
Connectez-vous à l'hôte du capteur
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.
Exécutez la commande
adddnsintegration
.Windows:
adddnsintegration.bat -type <dns_provider_name>
Linux:
./adddnsintegration.sh -type <dns_provider_name>
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 2023, 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é
Ouvrez Notepad ou autre éditeur texte de votre choix.
Définissez les identifiants de connexion, le challenge DNS et les codes de sortie.
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
Ouvrez Notepad ou autre éditeur texte de votre choix.
Définissez le chemin du fichier postscript PowerShell, l’argument pour passer le challenge DNS, et les codes de sortie.
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
Ouvrez Notepad ou autre éditeur texte de votre choix.
Définissez les identifiants de connexion, le challenge DNS et les codes de sortie.
Enregistrez le fichier avec une extension .sh. Assurez-vous de bien en noter l’emplacement.
Créer une intégration DNS personnalisée
Connectez-vous à l'hôte du capteur
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.
Exécutez la commande
adddnsintegration
.Windows:
adddnsintegration.bat -type custom
Linux:
./adddnsintegration.sh -type custom
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 2023, 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.
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.
Commande | Syntaxe | Description |
---|---|---|
Windows: |
| Ajouter une intégration DNS pour automatiser les certificats DV. |
Linux: |
| |
Windows: | - | Afficher la liste complète des fournisseurs de DNS pris en charge ci-dessous. |
Linux: | ||
Windows: |
| Voir la liste des intégrations DNS configurées avec le capteur. |
Linux: |
| |
Windows: |
| Mettre à jour l’intégration DNS. |
Linux: |
| |
Windows: |
| Supprimer l’intégration DNS du capteur. |
Linux: |
|