Så verifierar dotnetup nedladdningar

Note

dotnetup är i offentlig förhandsversion. Dess funktioner och beteende kan ändras före allmän tillgänglighet.

dotnetup verifierar de .NET SDK:er och runtimer som den laddar ned innan de extraheras. Typen av verifiering beror på var bygget kommer ifrån.

Släppta byggen

För utgivna versioner dotnetup använder en förtroendekedja som börjar med ett signerat versionsmanifest:

  1. dotnetup Ladda ned .NET-versionens manifest. Dessa manifest är utgivningsindexet och filen releases.json för varje kanal.
  2. dotnetup verifierar den frånkopplade kodsignaturen (.p7s filen) för varje manifest. Om signaturen saknas eller inte är giltig misslyckas kommandot.
  3. Det verifierade manifestet innehåller SHA-512-hashen för varje arkiv.
  4. dotnetup laddar ned arkivet och jämför dess SHA-512-hash med hashen i manifestet. Om hashvärdena inte matchar misslyckas kommandot och dotnetup kommer inte att extrahera arkivet.

Eftersom det signerade manifestet binder hashvärdet för varje arkiv verifierar dotnetup inte en separat signatur för varje arkiv.

Signaturverifiering kontrollerar även certifikatåterkallningsstatus online. Tillåt åtkomst till de slutpunkter för certifikatåterkallning som krävs. Om nätverket blockerar dessa kontroller misslyckas verifieringen och dotnetup stoppar installationen, även när signaturen är giltig.

Manifestets giltighetstid

Releasemanifest innehåller en förfallotid. dotnetup kontrollerar att manifestet inte har upphört att gälla, även om dess signatur- och arkiv-hashvärden är giltiga. Den kontrollerar också att manifestet har signerats före dess förfallotid.

En felaktig systemklocka eller ett manifest som har upphört att gälla kan göra att verifieringen misslyckas. Vägledning för återställning finns i Ett versionsmanifest har upphört att gälla.

Betrodda certifikat

För manifestsignaturer och deras tidsstämplar, dotnetup, används betrodda rotcertifikat som paketeras med verktyget. Det lägger inte till certifikat från operativsystemets betrodda certifikatarkiv till dessa förtroenderötter.

Att lägga till ett certifikat i operativsystemets förtroendearkiv innebär inte att dotnetup litar på en release-manifest-signatur från det certifikatets certifikatkedja. Signaturen måste uppfylla dotnetups verifieringsprincip och kunna spåras till en medföljande betrodd rotcertifikatutfärdare.

Dagliga och olistade förhandsversioner

Dagliga versioner och förhandsversioner som inte finns i det signerade versionsmanifestet kommer från en annan feed. Dessa versioner har en SHA-512-hashfil men ingen kodsignatur. För dessa versioner verifierar dotnetup endast SHA-512-hashen.

dotnetup använder den här sökvägen när du installerar:

  • En daglig kanal, till exempel daily eller 10.0-daily.
  • En fullständigt angiven förhandsversion, till exempel 10.0.100-preview.4.25216.37, som inte finns i versionsmanifestet.

Innan installationen startar dotnetup visas den här varningen:

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

Mer information om dagliga versioner finns i Använda förhandsversioner och dagliga versioner.

Blockera osignerade nedladdningar

Administratörer kan blockera installationen av versioner som inte är kodsignerade. När den här principen är i kraft dotnetup installerar den fortfarande versioner som släppts, men installationer av dagliga och olistade förhandsversioner misslyckas.

Windows

Skapa BlockUnsignedDownloads registervärdet som ett REG_DWORD med ett värde som inte är noll under HKLM\SOFTWARE\Policies\Microsoft\dotnet\Dotnetup. Kör till exempel dessa kommandon i en förhöjd PowerShell-session:

$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

Om du vill rensa policyn tar du bort värdet eller ställer in det på 0.

Linux och macOS

Skapa /etc/dotnet/dnup-block-unsigned-downloads filen. Filens innehåll spelar ingen roll. Ett exempel:

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

Ta bort filen för att rensa policyn.

Blockerade installationer

När principen blockerar en installation dotnetup visas ett fel som liknar följande meddelande:

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 ...

Om du vill fortsätta installerar du en version som släppts eller ber administratören att rensa principen.

Den körbara filen dotnetup

Nedladdningsskripten get-dotnetup verifierar den nedladdade dotnetup körbara filen med sin SHA-512-kontrollsummafil. Mer information finns i artikeln Komma igång med dotnetup.

dotnetup self update verifierar också den nedladdade körbara filens SHA-512-kontrollsumma. Om den installerade körbara filen är Authenticode-signerad på Windows måste ersättningen ha en Authenticode-signatur med en Microsoft betrodd rot. Andra plattformar och osignerade Windows installationer förlitar sig på kontrollsumman.

Självuppdatering använder för närvarande den osignerade blobfeeden, inte de signerade .NET versionsmanifest som beskrevs tidigare. Principen för osignerad nedladdning blockerar även självuppdatering från den här kanalen.

Efter ersättningen kör dotnetup den nya körbara filen med --version och kontrollerar att dess version matchar den fastställda utgåvan. Om den här kontrollen misslyckas försöker dotnetup återställa den tidigare körbara filen. Den här startkontrollen autentiserar inte nedladdningen.

Se även