Een DNS-integratie maken om DV-certificaten op load balancers te automatiseren
Voordat DigiCert een DV-certificaat kan uitgeven moet u aantonen dat u controle heeft over het domein dat wordt vermeld in uw certificaataanvraag.
Voor het automatiseren van de installatie van DV-certificaten gebruikt u DNS-integratie om uw controle over de domeinen in uw DV-certificaataanvraag aan te tonen. Voor deze DCV methode, moet u alvorens het verzoek in te dienen een DNS-integratie creëren.
Met uw DNS-integratie kan de DigiCert-automatiseringsdiensten uw referenties gebruiken om de DNS-uitdaging op de DNS-server te plaatsen en de validatie uit te voeren. De DNS-uitdaging wordt automatisch gegenereerd als onderdeel van het automatiseringsproces. Zodra de domeinvalidatie is voltooid, zal de automatisering slagen en het DV-certificaat installeren.
U kunt een DNS-integratie creëren met behulp van een ondersteunde DNS-provider of een aangepast DNS-script.
Een voorbeeld: DNS-uitdaging
example.com,example1.com,example2.com dns-txt-token 342893284294sfjdkfjshfCOPY
Voordat u begint
Verifieer of de load balancer in kwestie toegevoegd is aan de sensor. Zie De sensorconfiguratie verifiëren en afronden..
Gebruik een ondersteunde DNS-provider. Zie DNS-providers die automatisering ondersteunen bekijken hieronder.
DNS-providers die automatisering ondersteunen bekijken
Log in op de sensorhost.
Ga naar de CLI-map van de sensor.
cd install_dir/cli
Waar install_dir de installatiemap voor de sensor is.
Voer de opdracht
listsupporteddns
uit.Windows:
listsupporteddns.bat
Linux:
./listsupporteddns.sh
Hier is de lijst van DNS-providers die automatisering ondersteunen.
Amazon Route 53 |
Azure |
Cloudflare |
CloudXNS |
Digital Ocean |
DNS Trust Manager (DNS Made Easy) |
DreamHost |
GoogleDNS |
Go Daddy |
NS1 |
OVH |
RFC2136 |
Sakura Cloud |
Een DNS-integratie maken met een DNS-provider
Log in op de sensorhost.
Ga naar de CLI-map van de sensor.
cd install_dir/cli
Waar install_dir de installatiemap voor de sensor is.
Voer de opdracht
adddnsintegration
uit.Windows:
adddnsintegration.bat -type <dns_provider_name>
Linux:
./adddnsintegration.sh -type <dns_provider_name>
Wanneer u de opdracht invoert, verschijnen er een serie prompts voor elke provider. Verstrek de informatie en druk op Enter.
Een voorbeeld: 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.
Een DNS-integratie maken met een aangepast DNS-script
Voordat u begint
Voordat u begint, maakt u een DNS-script voor het besturingssysteem waarmee u de installatie van het DV-certificaat wilt automatiseren. U kunt een script maken of een van de voorbeeldscripts aanpassen om uw script te definiëren.
Belangrijk
DigiCert beveelt aan de scripts op een standaard locatie te plaatsen, bijvoorbeeld de installatiemap van de sensor. Bijvoorbeeld: sensorinstalldir/localscripts/script-to-upload.bat
Windows DNS-scripts
Voor Windows heeft u twee scripts nodig om te bewijzen dat u controle heeft over de domeinen: DNS .bat-script en ingesloten PowerShell-postscript (.ps1, .py, .ps, of enige andere opmaak).
Een ingesloten DNS PowerShell-postscript maken
Open Notepad of een ander tekstverwerkingsprogramma.
Definieer de referenties, DNS-uitdaging en afsluitcodes.
Sla het bestand op met .ps1, .py, .ps, of enige andere extensie van uw voorkeur. Vergeet niet de locatie te noteren.
Een DNS-script maken
Open Notepad of een ander tekstverwerkingsprogramma.
Definieer het bestandspad van het PowerShell-postScript, het argument om de DNS-uitdaging door te geven, en de afsluitcodes.
Sla het bestand op met de .bat-extensie. Vergeet niet de locatie te noteren.
Linux DNS-script
Voor Linus heeft u een DNS .sh nodig om te bewijzen dat u controle heeft over de domeinen.
Een DNS-script maken
Open Notepad of een ander tekstverwerkingsprogramma.
Definieer de referenties, DNS-uitdaging en afsluitcodes.
Sla het bestand op met de .sh-extensie. Vergeet niet de locatie te noteren.
Een aangepaste DNS-integratie maken
Log in op de sensorhost.
Ga naar de CLI-map van de sensor.
cd install_dir/cli
Waar install_dir de installatiemap voor de sensor is.
Voer de opdracht
adddnsintegration
uit.Windows:
adddnsintegration.bat -type custom
Linux:
./adddnsintegration.sh -type custom
Wanneer u de opdracht invoert, verschijnen er een serie prompts. Verstrek de informatie en druk op Enter.
Een voorbeeld: ./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.
Afsluitcodes
Elk programma dat u start wordt beëindigd met een afsluitcode en rapporteert deze aan het besturingssysteem. Een afsluitcode, soms ook wel een retourcode genoemd, is de code die door een uitvoerbaar bestand wordt teruggegeven aan een bovenliggend proces.
Afsluitcode | Beschrijving |
---|---|
0 | Succesvolle uitvoering van het script. |
1 | Het script kon om een of andere reden niet worden uitgevoerd. |
Voorbeeldscripts
AWS - DNS PowerShell-postscript (.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 # For TXT-based DNS challenges, value must be in quotes $challengeValue = if ($Type -eq "TXT") {"""$Value"""} else {$Value} $Change.ResourceRecordSet.ResourceRecords.Add(@{Value=$challengeValue}) # 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" }
DNS .bat-script
echo "Invoking DNS script" pushd %~dp0 powershell.exe -File {DNSPostscriptPath} %* echo "Exit Code : %errorlevel%" set returnCode=%errorlevel% popd EXIT /B %returnCode%
Opmerking
%* bepaalt de DNS-uitdaging. Het haalt zijn waarden uit het postscript.
AWS - DNS .sh-script
#!/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
CLI-opdrachten voor DNS-integratie
Windows- en Linux-opdrachten voor het toevoegen en configureren van DNS-integraties of -providers aan sensoren voor automatisering van DV-certificaten op load balancers.
Opdracht | Syntaxis | Beschrijving |
---|---|---|
Windows: |
| Een DNS-integratie toevoegen om DV-certificaten te automatiseren. |
Linux: |
| |
Windows: | - | Zie de volledige lijst van ondersteunde DNS-providers hieronder. |
Linux: | ||
Windows: |
| Bekijk de lijst van DNS-integraties die met de sensor zijn geconfigureerd. |
Linux: |
| |
Windows: |
| De DNS-integratie bijwerken. |
Linux: |
| |
Windows: |
| De DNS-integratie verwijderen van de sensor. |
Linux: |
|