Crie uma integração DNS para automatizar certificados DV em balanceadores de carga
Antes que a DigiCert possa emitir um certificado DV, você deve demonstrar controle sobre os domínios incluídos na solicitação de certificado.
Para automatizar a instalação do certificado DV, use a integração DNS para provar seu controle sobre os domínios em sua solicitação de certificado DV. Para este método DCV, você deve criar uma integração DNS antes de enviar a solicitação.
Sua integração DNS permite que os serviços de automação da DigiCert usem suas credenciais para colocar o desafio DNS no servidor DNS e concluir a verificação de validação. O desafio DNS é gerado automaticamente como parte do processo de automação. Depois que a validação do domínio for concluída, a automação será bem-sucedida e instalará o certificado DV.
Você pode criar uma integração de DNS usando um provedor de DNS compatível ou um script de DNS personalizado.
Exemplo: Desafio DNS
example.com,example1.com,example2.com dns-txt-token 342893284294sfjdkfjshfCOPY
Antes de começar
Verifique se o balanceador de carga de destino foi adicionado ao sensor. Consulte Verifique e finalize a configuração do sensor.
Use um provedor de DNS compatível. Consulte Visualize provedores de DNS compatíveis com automação abaixo.
Visualize provedores de DNS compatíveis com automação
Faça login no host do sensor.
Vá para o diretório CLI do sensor.
cd install_dir/cli
Onde install_dir é o diretório de instalação do sensor.
Execute o comando
listsupporteddns
.Windows:
listsupporteddns.bat
Linux:
./listsupporteddns.sh
Aqui está a lista de provedores de DNS com suporte para automação.
Rota 53 da Amazônia |
Azure |
Cloudflare |
CloudXNS |
Digital Ocean |
DNS Trust Manager (DNS Made Easy) |
DreamHost |
GoogleDNS |
Go Daddy |
NS1 |
OVH |
RFC2136 |
Sakura Cloud |
Criar uma integração de DNS com um provedor de DNS
Faça login no host do sensor.
Vá para o diretório CLI do sensor.
cd install_dir/cli
Onde install_dir é o diretório de instalação do sensor.
Execute o comando
adddnsintegration
.Windows:
adddnsintegration.bat -type <dns_provider_name>
Linux:
./adddnsintegration.sh -type <dns_provider_name>
Quando você digita o comando, uma série de prompts é exibida para cada provedor. Forneça as informações e pressione Enter.
Exemplo: 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.
Criar uma integração DNS com um script DNS personalizado
Antes de começar
Antes de começar, crie um script DNS para o sistema operacional que você deseja automatizar a instalação do certificado DV. Você pode criar um script ou modificar um dos scripts de amostra para definir seu script.
Importante
A DigiCert recomenda colocar os scripts em um local padrão, como o diretório de instalação do sensor. Por exemplo: sensorinstalldir/localscripts/script-to-upload.bat
Scripts DNS do Windows
Para Windows, você precisa de dois scripts para provar seu controle sobre os domínios: Script DNS .bat script e postscript PowerShell incorporado (.ps1, .py, .ps ou qualquer outro formato).
Criar postscript de DNS PowerShell incorporado
Abra o Bloco de Notas ou qualquer outra ferramenta de edição de texto.
Defina as credenciais de login, desafio de DNS e códigos de saída.
Salve o arquivo com .ps1, .py, .ps ou qualquer outra extensão de sua escolha. Certifique-se de anotar o local.
Criar script DNS
Abra o Bloco de Notas ou qualquer outra ferramenta de edição de texto.
Defina o caminho do local do arquivo postscript do PowerShell, o argumento para passar o desafio DNS e os códigos de saída.
Salve o arquivo com a extensão .bat. Certifique-se de anotar o local.
Script DNS do Linux
Para Linux, você precisa de um script DNS .sh para comprovar o controle sobre os domínios.
Criar um script DNS
Abra o Bloco de Notas ou qualquer outra ferramenta de edição de texto.
Defina as credenciais de login, desafio de DNS e códigos de saída.
Salve o arquivo com a extensão .sh. Certifique-se de anotar o local.
Criar uma integração DNS personalizada
Faça login no host do sensor.
Vá para o diretório CLI do sensor.
cd install_dir/cli
Onde install_dir é o diretório de instalação do sensor.
Execute o comando
adddnsintegration
.Windows:
adddnsintegration.bat -type custom
Linux:
./adddnsintegration.sh -type custom
Quando você digita o comando, uma série de prompts é exibida. Forneça as informações e pressione Enter.
Exemplo: ./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.
Códigos de saída
Cada programa que você inicia termina com um código de saída e o reporta ao sistema operacional. Um código de saída, ou às vezes conhecido como código de retorno, é o código retornado a um processo pai por um executável.
Código de saída | Descrição |
---|---|
0 | Execução bem-sucedida do script. |
1 | Falha ao executar o script por qualquer motivo. |
Scripts de amostra
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%
Nota
%* determina o desafio do DNS. Ele recupera seus valores do 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
Comandos de CLI de integração de DNS
Comandos Windows e Linux para adicionar e configurar integrações ou provedores de DNS a sensores para automação de certificados DV em balanceadores de carga.
Comando | Sintaxe | Descrição |
---|---|---|
Windows: |
| Adicione uma integração DNS para automatizar certificados DV. |
Linux: |
| |
Windows: | - | Veja a lista completa de provedores de DNS suportados. |
Linux: | ||
Windows: |
| Veja a lista de integrações DNS configuradas com o sensor. |
Linux: |
| |
Windows: |
| Atualize a integração DNS. |
Linux: |
| |
Windows: |
| Exclua a integração DNS do sensor. |
Linux: |
|