建立 DNS 整合以自動化負載平衡器上的 DV 憑證
在 DigiCert 可以發行 DV 憑證前,您必須證明您對憑證要求中的網域擁有控制權。
關於自動化 DV 憑證安裝,請使用 DNS 整合證明您有您的 DV 憑證要求中的網域的控制權。關於此 DCV 方法,您必須在提交要求前建立 DNS 整合。
您的 DNS 整合允許 DigiCert 自動化服務使用您的認證將 DNS 挑戰放置在 DNS 伺服器上和完成驗證檢查。DNS 挑戰作為自動化程序的一部份自動產生。一完成網域驗證時,自動化將成功並安裝 DV 憑證。
您可以使用支援的 DNS 提供者或自訂的 DNS 指令集建立 DNS 整合。
範例:DNS 挑戰
example.com,example1.com,example2.com dns-txt-token 342893284294sfjdkfjshfCOPY
在您開始前
驗證目標負載平衡器已新增到感應器中。請參閱 確認和最終化感應器組態。
使用支援的 DNS 提供者。請參閱以下的 檢視自動化支援的 DNS 提供者。
檢視自動化支援的 DNS 提供者
登入感應器主機。
前往感應器 CLI 目錄。
cd install_dir/cli
其中的 install_dir 是供感應器使用的安裝目錄。
執行
listsupporteddns
命令。Windows:
listsupporteddns.bat
Linux:
./listsupporteddns.sh
以下是自動化支援 DNS 提供者的清單。
Amazon Route 53 |
Azure |
Cloudflare |
CloudXNS |
Digital Ocean |
DNS Trust Manager (DNS Made Easy) |
DreamHost |
GoogleDNS |
Go Daddy |
NS1 |
OVH |
RFC2136 |
Sakura Cloud |
建立與 DNS 提供者整合的 DNS。
登入感應器主機。
前往感應器 CLI 目錄。
cd install_dir/cli
其中的 install_dir 是供感應器使用的安裝目錄。
執行
adddnsintegration
命令。Windows:
adddnsintegration.bat -type <dns_provider_name>
Linux:
./adddnsintegration.sh -type <dns_provider_name>
當您輸入命令時,將會出現給每個提供者的一系列提示。提供資訊,然後按 Enter。
範例: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.
建立與自訂的 DNS 指令集整合的 DNS
在您開始前
在您開始前,請為您要自動化 DV 憑證安裝的作業系統建立 DNS 指令集。您可以建立指令集或修改其中一個樣本指令集以定義您的指令集。
Important
DigiCert 建議將指令集放置在預設位置中,例如感應器的安裝目錄。例如:sensorinstalldir/localscripts/script-to-upload.bat
Windows DNS 指令集
對於 Windows,您需要兩個指令集證明您對於網域有控制權:DNS .bat 指令集和內嵌的 PowerShell Postscript (.ps1、.py、.ps 或任何其他格式)。
建立內嵌的 DNS PowerShell Postscript
開啟記事本或任何其他文字編輯工具。
定義登入認證、DNS 挑戰和結束代碼。
使用 .ps1、.py、.ps,或您選擇的任何其他副檔名儲存檔案。確定記錄位置。
建立 DNS 指令集
開啟記事本或任何其他文字編輯工具。
定義 PowerShell Postscript 檔案位置路徑、通過 DNS 挑戰的引數和結束代碼。
使用副檔名 .bat 儲存檔案。確定記錄位置。
Linux DNS 指令集
對於 Linux,您需要 DNS .sh 指令集證明對於網域有控制權。
建立 DNS 指令集
開啟記事本或任何其他文字編輯工具。
定義登入認證、DNS 挑戰和結束代碼。
使用副檔名 .sh 儲存檔案。確定記錄位置。
建立自訂的 DNS 整合
登入感應器主機。
前往感應器 CLI 目錄。
cd install_dir/cli
其中的 install_dir 是供感應器使用的安裝目錄。
執行
adddnsintegration
命令。Windows:
adddnsintegration.bat -type custom
Linux:
./adddnsintegration.sh -type custom
當您輸入命令時,出現一系列提示。提供資訊,然後按 Enter。
範例:./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.
結束代碼
您開始使用的每個程式都以結束代碼終止,並將其報告給作業系統。結束代碼有時稱為傳回代碼,是可執行檔傳回給父項程序的代碼。
結束代碼 | 說明 |
---|---|
0 | 成功執行指令集。 |
1 | 因任何原因無法執行指令集。 |
樣本指令集
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 指令集
echo "Invoking DNS script" pushd %~dp0 powershell.exe -File {DNSPostscriptPath} %* echo "Exit Code : %errorlevel%" set returnCode=%errorlevel% popd EXIT /B %returnCode%
Note
%* 判斷 DNS 挑戰。自 Postscript 擷取值。
AWS - 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
DNS 整合 CLI 命令
Window 和 Linux 命令,用於新增和設定 DNS 整合或提供者到負載平衡器的 DV 憑證自動化的感應器中。
命令 | 語法 | 說明 |
---|---|---|
Windows: |
| 新增 DNS 整合以自動化 DV 憑證。 |
Linux: |
| |
Windows: | - | 請檢視完整的支援 DNS 提供者清單。 |
Linux: | ||
Windows: |
| 請檢視以感應器設定的 DNS 整合的清單。 |
Linux: |
| |
Windows: |
| 更新 DNS 整合。 |
Linux: |
| |
Windows: |
| 從感應器中刪除 DNS 整合。 |
Linux: |
|