Comment dotnetup vérifie les téléchargements

Note

dotnetup est disponible en préversion publique. Ses fonctionnalités et son comportement peuvent changer avant la disponibilité générale.

dotnetupvérifie les kits de développement logiciel (SDK) .NET et les runtimes qu’il télécharge avant de les extraire. Le type de vérification dépend de l’origine de la build.

Versions publiées

Pour les builds publiés, dotnetup utilise une chaîne de confiance qui commence par un manifeste de mise en production signé :

  1. dotnetup télécharge les manifestes de version .NET. Ces manifestes sont l’index des versions et le fichier releases.json pour chaque canal.
  2. dotnetup vérifie la signature de code détachée (fichier .p7s) de chaque fichier manifeste. Si la signature est manquante ou n’est pas valide, la commande échoue.
  3. Le manifeste vérifié contient le hachage SHA-512 de chaque archive.
  4. dotnetup télécharge l’archive et compare son hachage SHA-512 au hachage dans le manifeste. Si les hachages ne correspondent pas, la commande échoue et dotnetup n’extrait pas l’archive.

Étant donné que le manifeste signé associe le hachage de chaque archive, dotnetup ne vérifie pas une signature distincte pour chaque archive.

La vérification de signature vérifie également en ligne l’état de révocation des certificats. Autoriser l’accès aux points de terminaison de révocation de certificats requis. Si le réseau bloque ces vérifications, la vérification échoue et dotnetup arrête l’installation, même lorsque la signature est valide.

Expiration du manifeste

Les manifestes de mise en production contiennent une date d’expiration. dotnetup vérifie que le manifeste n’a pas expiré, même si ses hachages de signature et d’archivage sont valides. Il vérifie également que le manifeste a été signé avant son heure d’expiration.

Une horloge système incorrecte ou un manifeste expiré peut entraîner l’échec de la vérification. Pour obtenir des conseils de récupération, consultez Un manifeste de version a expiré.

Certificats approuvés

Pour les signatures de manifeste et leurs horodatages, dotnetup utilise des certificats racines approuvés regroupés avec l’outil. Il n’ajoute pas de certificats du magasin de certificats de confiance du système d’exploitation à ces racines de confiance.

L’ajout d’un certificat au magasin d’approbation du système d’exploitation n’amène pas dotnetup à faire confiance à une signature de manifeste de mise en production provenant de la chaîne de ce certificat. La signature doit satisfaire la stratégie de vérification de dotnetup et être rattachée à une racine de confiance intégrée.

Builds de préversion quotidiennes et non répertoriées

Les builds quotidiennes et les versions préliminaires qui ne sont pas dans le manifeste de version signée proviennent d’un autre flux. Ces builds ont un fichier de hachage SHA-512, mais aucune signature de code. Pour ces builds, dotnetup vérifie uniquement le hachage SHA-512.

dotnetup utilise ce chemin d’accès lorsque vous installez :

  • Un canal quotidien, tel que daily ou 10.0-daily.
  • Version préliminaire entièrement spécifiée, telle que 10.0.100-preview.4.25216.37, qui n’est pas dans le manifeste de mise en production.

Avant le démarrage de l’installation, dotnetup affiche cet avertissement :

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

Pour plus d’informations sur les builds quotidiens, consultez Utiliser la préversion et les builds quotidiens.

Bloquer les téléchargements non signés

Les administrateurs peuvent bloquer l’installation des builds qui ne sont pas signés numériquement. Lorsque cette stratégie est en vigueur, dotnetup installe toujours les builds publiées, mais les installations des builds préliminaires quotidiennes et non répertoriées échouent.

Windows

Créez la valeur de Registre BlockUnsignedDownloads comme REG_DWORD, avec une valeur non nulle sous HKLM\SOFTWARE\Policies\Microsoft\dotnet\Dotnetup. Par exemple, exécutez ces commandes dans une session PowerShell avec élévation de privilèges :

$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

Pour effacer la politique, supprimez la valeur ou définissez-la sur 0.

Linux et macOS

Créez le fichier /etc/dotnet/dnup-block-unsigned-downloads. Le contenu du fichier n’a pas d’importance. Par exemple:

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

Pour effacer la politique, supprimez le fichier.

Installations bloquées

Lorsque la stratégie bloque une installation, dotnetup affiche une erreur similaire au message suivant :

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

Pour continuer, installez une version publiée ou demandez à votre administrateur d’effacer la politique.

L’exécutable dotnetup

Les get-dotnetup scripts de téléchargement vérifient l’exécutable téléchargé dotnetup à l’aide de son fichier de somme de contrôle SHA-512. Pour plus d’informations, consultez Prise en main de dotnetup.

Voir aussi