Come dotnetup verifica i download

Note

dotnetup è disponibile in anteprima pubblica. Le funzionalità e il comportamento potrebbero cambiare prima della disponibilità generale.

dotnetupverifica gli SDK di .NET e i runtime scaricati prima di estrarli. Il tipo di verifica dipende dalla provenienza della compilazione.

Versioni rilasciate

Per le build rilasciate, dotnetup usa una catena di attendibilità che inizia con un manifesto di versione firmato:

  1. dotnetup scarica i manifesti di rilascio .NET. Questi manifest sono l'indice delle versioni e il file releases.json per ogni canale.
  2. dotnetup verifica la firma del codice separata (file .p7s) di ogni manifest. Se la firma è mancante o non è valida, il comando ha esito negativo.
  3. Il manifest verificato contiene l'hash SHA-512 di ogni archivio.
  4. dotnetup scarica l'archivio e confronta l'hash SHA-512 con l'hash nel manifesto. Se gli hash non corrispondono, il comando fallisce e dotnetup non estrae l'archivio.

Poiché il manifesto firmato vincola l'hash di ogni archivio, dotnetup non verifica una firma separata per ogni archivio.

La verifica della firma controlla anche lo stato di revoca dei certificati online. Consentire l'accesso agli endpoint di revoca dei certificati necessari. Se la rete blocca questi controlli, la verifica fallisce e dotnetup interrompe l'installazione, anche quando la firma è valida.

Scadenza del manifesto

I manifesti di versione contengono un'ora di scadenza. dotnetup verifica che il manifest non sia scaduto, anche se i relativi hash di firma e archivio sono validi. Verifica inoltre che il manifest sia stato firmato prima della scadenza.

Un orologio di sistema non corretto o un manifest scaduto può causare l'esito negativo della verifica. Per indicazioni sul ripristino, vedere Un manifest del rilascio è scaduto.

Certificati attendibili

Per le firme del manifesto e i relativi timestamp, dotnetup usa i certificati radice attendibili in bundle con lo strumento . Non aggiunge certificati dall'archivio attendibilità del sistema operativo a tali radici di attendibilità.

L'aggiunta di un certificato all'archivio attendibilità del sistema operativo non fa sì che dotnetup consideri attendibile una firma del manifesto di rilascio dalla catena del certificato. La firma deve soddisfare i criteri di verifica di dotnetup ed essere collegata a una radice attendibile inclusa.

Build giornaliere e prerelease non pubblicate

Le build giornaliere e le versioni non definitive non incluse nel manifesto della versione firmata provengono da un feed diverso. Queste compilazioni hanno un file hash SHA-512, ma nessuna firma di codice. Per queste compilazioni, dotnetup verifica solo l'hash SHA-512.

dotnetup usa questo percorso quando si installa:

  • Canale giornaliero, ad esempio daily o 10.0-daily.
  • Versione non definitiva completamente specificata, ad esempio 10.0.100-preview.4.25216.37, che non è presente nel manifest di rilascio.

Prima dell'avvio dell'installazione, dotnetup viene visualizzato questo avviso:

⚠ Daily builds are not code-signed. Only the SHA-512 hash is verified.

Per altre informazioni sulle build giornaliere, vedere Usare le build di anteprima e giornaliere.

Bloccare i download non firmati

Gli amministratori possono bloccare l'installazione delle compilazioni che non sono firmate digitalmente. Quando questo criterio è attivo, dotnetup installa ancora le build rilasciate, ma le installazioni di build prerelease giornaliere e non elencate hanno esito negativo.

Windows

Creare il valore del Registro di sistema BlockUnsignedDownloads come REG_DWORD con un valore diverso da zero in HKLM\SOFTWARE\Policies\Microsoft\dotnet\Dotnetup. Ad esempio, eseguire questi comandi in una sessione di PowerShell con privilegi elevati:

$key = 'HKLM:\SOFTWARE\Policies\Microsoft\dotnet\Dotnetup'
New-Item -Path $key -Force | Out-Null
New-ItemProperty -Path $key -Name 'BlockUnsignedDownloads' -PropertyType DWord -Value 1 -Force | Out-Null

Per cancellare il criterio, eliminare il valore o impostarlo su 0.

Linux e macOS

Creare il /etc/dotnet/dnup-block-unsigned-downloads file. Il contenuto del file non è importante. Ad esempio:

sudo mkdir -p /etc/dotnet
sudo touch /etc/dotnet/dnup-block-unsigned-downloads

Per cancellare il criterio, eliminare il file.

Installazioni bloccate

Quando il criterio blocca un'installazione, dotnetup viene mostrato un errore simile al seguente messaggio:

An IT policy on this machine requires code-signed downloads. Installing daily or unsigned prerelease builds of SDK <version> is blocked. Choose a released version, or have an administrator clear the policy ...

Per continuare, installare una versione rilasciata o chiedere all'amministratore di cancellare il criterio.

L'eseguibile dotnetup

Gli get-dotnetup script di download verificano il file eseguibile dotnetup scaricato con il relativo file di checksum SHA-512. Per altre informazioni, vedere Introduzione all'uso di dotnetup.

Vedere anche