부하 분산 장치에서 DV 인증서를 자동화하는 DNS 통합 만들기
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 스크립트를 만듭니다. 스크립트를 생성하거나 샘플 스크립트 중 하나를 수정하여 스크립트를 정의할 수 있습니다.
중요
DigiCert는 기본 위치(센서의 설치 디렉터리 등)에 스크립트를 배치하도록 권장합니다. 예: sensorinstalldir/localscripts/script-to-upload.bat
Windows DNS 스크립트
Windows의 경우 도메인에 대한 제어를 증명하려면 두 가지 스크립트, 즉 DNS .bat 스크립트 및 포함된 PowerShell 포스트스크립트(.ps1, .py, .ps 또는 기타 형식)가 필요합니다
포함된 DNS PowerShell 포스트스크립트 만들기
메모장이나 다른 텍스트 편집 도구를 엽니다.
로그인 자격 증명, DNS 챌린지 및 종료 코드를 정의합니다.
파일을 .ps1, .py, .ps 또는 선택한 다른 확장명으로 저장합니다. 위치를 반드시 기록해 두십시오.
DNS 스크립트 만들기
메모장이나 다른 텍스트 편집 도구를 엽니다.
PowerShell 포스트스크립트 파일 위치 경로, DNS 챌린지를 전달할 인수 및 종료 코드를 정의합니다.
.bat 확장자로 파일을 저장합니다. 위치를 반드시 기록해 두십시오.
Linux 스크립트 만들기
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 포스트스크립트(.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%
참고
%*가 DNS 챌린지를 결정합니다. 해당 값은 포스트스크립트에서 검색합니다.
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 명령
부하 분산 장치에서 DV 인증서 자동화를 위해 센서에 DNS 통합 또는 공급자를 추가하고 구성하기 위한 Windows 및 Linux 명령.
명령 | 구문 | 설명 |
---|---|---|
Windows: |
| DV 인증서 자동화를 위해 DNS 통합을 추가. |
Linux: |
| |
Windows: | - | 지원되는 DNS 제공자의 전체 목록 보기. |
Linux: | ||
Windows: |
| 센서로 구성된 DNS 통합 목록 보기. |
Linux: |
| |
Windows: |
| DNS 통합 업데이트. |
Linux: |
| |
Windows: |
| 센서에서 DNS 통합을 삭제. |
Linux: |
|