Buscar o certificado RSAT de um ambiente em um arquivo zip

Note

Grupos de interesse da comunidade mudaram do Yammer para o Microsoft Viva Engage. Para ingressar em uma comunidade Viva Engage e participar das discussões mais recentes, preencha o formulário Requeste o acesso à Comunidade Viva Engage de Finanças e Operações e escolha a comunidade que você deseja ingressar.

Importante

A partir de fevereiro de 2026, novos clientes não podem criar projetos nos Serviços de Ciclo de Vida do Microsoft Dynamics para Microsoft Dynamics 365 Finance, Microsoft Dynamics 365 Human Resources, Microsoft Dynamics 365 Supply Chain Management e Microsoft Dynamics 365 Project Operations. Em vez disso, novos clientes devem usar o centro de administração do Power Platform . Para obter mais informações, consulte o congelamento da criação de projetos nos Serviços de Ciclo de Vida.

Você pode buscar o pacote de certificados RSAT (Regression Suite Automation Tool) para um ambiente por meio dos Serviços de Ciclo de Vida Microsoft Dynamics por meio da API de Ambiente dos Serviços de Ciclo de Vida. Essa API retorna um arquivo zip codificado em Base 64 e uma senha codificada em Base 64 para a senha de certificado privado.

O processo completo para consumir o zip pode ser encontrado na página de instalação e configuração da Ferramenta de Automação do Regression Suite .

Permissões

Aplicativo de API

Uma das permissões a seguir é necessária para chamar essa API. Para obter mais informações sobre permissões e como selecioná-las, consulte API de movimentação de banco de dados – Autenticação.

Tipo de permissão Permissões (de menos privilegiado ao mais privilegiado)
Delegada (conta corporativa ou de estudante) user_impersonation

Serviços de Ciclo de Vida

Nos Serviços de Ciclo de Vida, o usuário que é usado na autenticação OAuth da API deve ser adicionado ao projeto como um proprietário do projeto ou um administrador de ambiente. O usuário deve aceitar o convite para o projeto.

solicitação HTTP

Use o ponto de extremidade GET a seguir para buscar o arquivo zip para o certificado RSAT de um ambiente.

Buscar o certificado RSAT por ambiente

GET /environmentinfo/v1/rsatdownload/project/{projectId}/environment/{environmentId}

Cabeçalhos de solicitação

Use os seguintes valores de cabeçalho no cabeçalho de solicitação HTTP.

Cabeçalho Valor
Autorização Portador {token} (obrigatório)
'x-ms-version' '2017-09-15' (obrigatório)
Tipo de Conteúdo application/json

Corpo da solicitação

Não forneça um corpo de solicitação para este método.

Resposta

HTTP

A resposta é sempre uma resposta "200 OK", a menos que você não esteja autenticado corretamente. Use a propriedade IsSuccess para avaliar o êxito ou a falha da ação.

Dados

Propriedade Description
CertificateZipEncoded Um zip que contém o . PFX e . Arquivos CER em uma matriz de bytes codificada em Base 64.
CertificateSecretEncoded O segredo privado do certificado privado como uma cadeia de caracteres codificada em Base 64. Isso alterará cada solicitação.
CertificateThumbprint A impressão digital do certificado privado.
ExpirationDateTimeUTC Uma data e hora em UTC (exibida em formato de texto completo) após a qual o certificado não é válido.
ExpirationISODateTimeUTC Uma data e hora em UTC (exibida no formato ISO 8606) após a qual o certificado não é válido.
Nome do Arquivo O nome do arquivo do zip que está sendo retornado.

Resposta de exemplo

Resposta bem-sucedida para uma solicitação no nível do projeto

{
    "Data": {
        "CertificateZipEncoded": "<base 64-encoded zip>",
        "CertificateSecretEncoded": "<base 64-encoded password>",
        "CertificateThumbprint": "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00",
        "ExpirationDateTimeUTC": "Sunday, September 4, 2022 4:00:00 AM",
        "ExpirationISODateTimeUTC": "2022-09-04T04:00:00Z",
        "Filename": "RSATCertificate_TestEnv1_20210805-100102.zip"
    },
    "IsSuccess": true,
    "OperationActivityId": "2234bff0-432d-478b-a5ac-1ccb529ee698",
    "ErrorMessage": null,
    "VersionEOL": "9999-12-31T23:59:59.9999999"
}

Analisando dados por meio do PowerShell

O script de exemplo a seguir se comunica com a API dos Serviços de Ciclo de Vida para baixar o arquivo zip do certificado RSAT para o computador local. Ele mostra a senha do certificado privado na janela do console. Um token de acesso deve ser fornecido.

# Basic Lifecycle Services API RSAT certificate zip download script
#
# This will download the RSAT certificate bundle for an environment
# to the current directory and display the private certificate's password
# in the console.
#
# The user used in the API authentication must be added to the
# project as an Environment Admin or Project Owner

# Configuration
$accessToken = "{access token string}";
$projId = {project id integer};
$envId = "{environment id GUID}"
$baseLCSAPI = "lcsapi.lcs.dynamics.com";

$url = "https://$baseLCSAPI/environmentinfo/v1/rsatdownload/project/$projId/environment/$envId"
 
$headers = @{
    "Authorization" = "Bearer $accessToken"
    "x-ms-version" = "2017-09-15"
    "Content-Type" = "application/json"
}

# Reset variable between executions
$certificateResponse = $null 
$shouldRetry = $false

do {
    $shouldRetry = $false

    try {
        # GET request to Lifecycle Services API
        $certificateResponse = Invoke-RestMethod $url -Method 'GET' -Headers $headers
    } catch {
        # Check if this is a HTTP 429 error
        if ($_.Exception.Response.StatusCode.value__ -eq 429) {

            # Too many requests for this environment, wait and retry
            $shouldRetry = $true
            $retrySeconds = [int]$_.Exception.Response.Headers['Retry-After']
            Write-Host "Too many requests - Retrying in $retrySeconds seconds"
            Start-Sleep -Seconds $retrySeconds
        } else {
            throw
        }
    }
} while($shouldRetry)

if ((-not $certificateResponse.IsSuccess) -or ($certificateResponse.Data -eq $null)) {
    Write-Host $certificateResponse.ErrorMessage
    throw
}

$fileName = $certificateResponse.Data.Filename
$certificateZip = [System.Convert]::FromBase64String($certificateResponse.Data.CertificateZipEncoded)
$certificateSecret = [System.Text.Encoding]::ASCII.GetString(
                            [System.Convert]::FromBase64String(
                                $certificateResponse.Data.CertificateSecretEncoded))

# Save the zip to the local disk.
# Could add unzipping in memory and install certificates to correct local certificate stores.
Set-Content $fileName -Value $certificateZip -Encoding Byte

Write-Host "Certificate bundle downloaded to $fileName with private certificate password $certificateSecret"

Limites de taxa

Para melhorar as solicitações de balanceamento de carga, há limites de taxa nessa API. Esses limites também são compartilhados com a interface da Web dos Serviços de Ciclo de Vida.

  • 1 chamada para cada ambiente por minuto

Note

As solicitações que excederem os limites de taxa serão rejeitadas e uma resposta "HTTP 429 Muitas Solicitações" será retornada. O cabeçalho retry-after indicará o número de segundos que a solicitação pode ser repetida após.