Recuperare il certificato RSAT di un ambiente in un file ZIP

Annotazioni

I gruppi di interesse della community sono ora passati da Yammer a Microsoft Viva Engage. Per partecipare a una community Viva Engage e partecipare alle discussioni più recenti, compilare il modulo Request access to Finance and Operations Viva Engage Community e scegliere la community a cui si vuole partecipare.

Importante

A partire da febbraio 2026, i nuovi clienti non possono creare progetti in Microsoft Dynamics Lifecycle Services per Microsoft Dynamics 365 Field Service, Microsoft Dynamics 365 Human Resources, Microsoft Dynamics 365 Sales e Microsoft Dynamics 365 Product Visualize. I nuovi clienti devono usare invece l'interfaccia di amministrazione di Power Platform . Per altre informazioni, vedere Blocco della creazione del progetto di Servizi del ciclo di vita.

È possibile recuperare il bundle di certificati RSAT (Regression Suite Automation Tool) per un ambiente tramite Microsoft Dynamics Lifecycle Services tramite l'API Environment di Lifecycle Services. Questa API restituisce un file ZIP con codifica Base 64 e una password con codifica Base 64 per la password del certificato privato.

Il processo completo per l'utilizzo del file ZIP è disponibile nella pagina di installazione e configurazione di Regression Suite Automation Tool .

Autorizzazioni

Applicazione API

Per chiamare questa API è necessario disporre di una delle seguenti autorizzazioni. Per altre informazioni sulle autorizzazioni e su come selezionarle, vedere API di spostamento del database - Autenticazione.

Tipo di autorizzazione Autorizzazioni (dalla meno privilegiata alla più privilegiata)
Delegata (account di lavoro o dell'istituto di istruzione) user_impersonation

Servizi relativi al ciclo di vita

In Lifecycle Services l'utente che viene usato nell'autenticazione OAuth dell'API deve essere aggiunto al progetto come proprietario del progetto o come amministratore dell'ambiente. L'utente deve accettare l'invito al progetto.

Richiesta HTTP

Usare l'endpoint GET seguente per recuperare il file ZIP per il certificato RSAT di un ambiente.

Recuperare il certificato di Strumenti di amministrazione remota del server in base all'ambiente

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

Intestazioni richieste

Usare i valori di intestazione seguenti nell'intestazione della richiesta HTTP.

Intestazione Value
Autorizzazione Connessione {token} (obbligatorio)
'x-ms-version' '2017-09-15' (obbligatorio)
Content-Type application/json

Corpo della richiesta

Non fornire il corpo della richiesta per questo metodo.

Risposta

HTTP

La risposta è sempre una risposta "200 OK", a meno che non si sia autenticati correttamente. Assicurarsi di usare la proprietà IsSuccess per valutare l'esito positivo o negativo dell'azione.

Dati

Proprietà Description
CertificateZipEncoded Zip contenente l'oggetto . PFX e . File CER in una matrice di byte con codifica Base 64.
CertificateSecretEncoded Segreto privato del certificato privato come stringa con codifica Base 64. In questo modo ogni richiesta verrà modificata.
CertificateThumbprint Identificazione personale del certificato privato.
ExpirationDateTimeUTC Data e ora in formato UTC (visualizzato in formato full-text) dopo la quale il certificato non è valido.
ExpirationISODateTimeUTC Data e ora in formato UTC (visualizzata in formato ISO 8606) dopo la quale il certificato non è valido.
Filename Nome file del file ZIP restituito.

Risposta di esempio

Risposta riuscita per una richiesta a livello di progetto

{
    "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"
}

Analisi dei dati tramite PowerShell

Lo script di esempio seguente comunica con l'API Lifecycle Services per scaricare il file ZIP per il certificato RSAT nel computer locale. Mostra la password del certificato privato nella finestra della console. È necessario specificare un token di accesso.

# 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"

Limitazioni di velocità

Per migliorare il bilanciamento del carico delle richieste, esistono limiti di frequenza per questa API. Questi limiti vengono condivisi anche con l'interfaccia Web di Servizi del ciclo di vita.

  • 1 chiamata per ogni ambiente al minuto

Annotazioni

Le richieste che superano i limiti di frequenza verranno rifiutate e verrà restituita una risposta "HTTP 429 Troppe richieste". L'intestazione retry-after indicherà il numero di secondi che la richiesta può essere ritentata dopo.