Gérer les limites d’approbation de package

L’installation de packages signés ne nécessite aucune action spécifique. Cependant, si le contenu a été modifié après sa signature, l’installation est bloquée avec une erreur NU3008.

Avertissement

Les packages signés avec des certificats non approuvés sont considérés comme non signés et installés sans avertissements ni erreurs, comme n’importe quel package non signé.

Configurer les exigences de signature de package

Remarque

Nécessite NuGet 4.9.0+ et Visual Studio version 15.9 et ultérieure sur Windows

Vous pouvez configurer la façon dont les clients NuGet valident les signatures de package en définissant signatureValidationMode sur require dans le fichier nuget.config avec la commande nuget config.

nuget.exe config -set signatureValidationMode=require
  <config>
    <add key="signatureValidationMode" value="require" />
  </config>

Ce mode vérifie que tous les packages sont signés par un des certificats approuvés dans le fichier nuget.config. Ce fichier vous permet de spécifier les auteurs et/ou les dépôts qui sont approuvés en fonction de l’empreinte du certificat.

Approuver un auteur de package

Pour approuver des packages en fonction de la signature de l’auteur, utilisez la commande trusted-signers pour définir la propriété author dans le fichier nuget.config.

nuget.exe  trusted-signers Add -Name MyCompanyCert -CertificateFingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 -FingerprintAlgorithm SHA256
<trustedSigners>
  <author name="MyCompanyCert">
    <certificate fingerprint="CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
  </author>
</trustedSigners>

Conseil

Utilisez la commande verify de nuget.exe pour obtenir la valeur SHA256 de l’empreinte du certificat.

Approuver tous les packages d’un dépôt

Pour approuver des packages en fonction de la signature du dépôt, utilisez l’élément repository :

<trustedSigners>  
  <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
    <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B4676070...." 
                  hashAlgorithm="SHA256" 
                allowUntrustedRoot="false" />
  </repository>
</trustedSigners>

Approuver des propriétaires de package

Les signatures de dépôt incluent des métadonnées supplémentaires pour déterminer les propriétaires du package au moment de l’envoi. Vous pouvez restreindre les packages d’un dépôt en fonction d’une liste de propriétaires :

<trustedSigners>  
  <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
    <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B4676070...." 
                  hashAlgorithm="SHA256" 
                allowUntrustedRoot="false" />
      <owners>microsoft;nuget</owners>
  </repository>
</trustedSigners>

Si un package a plusieurs propriétaires et que l’un de ces propriétaires est dans la liste approuvée, l’installation du package réussit.

Certificats racines non approuvés

Dans certaines situations, vous souhaitez activer la vérification avec des certificats qui ne sont pas chaînés à une racine approuvée dans la machine locale. Vous pouvez utiliser l’attribut allowUntrustedRoot pour personnaliser ce comportement.

Synchroniser des certificats de dépôt

Les dépôts de packages doivent annoncer les certificats qu’ils utilisent dans leur index des services. Au final, le dépôt met à jour ces certificats, par exemple quand un certificat expire. Quand cela se produit, les clients avec des stratégies spécifiques demandent une mise à jour de la configuration pour inclure le certificat nouvellement ajouté. Vous pouvez facilement mettre à niveau les signataires approuvés associés à un dépôt avec la commande trusted-signers sync de nuget.exe.

Informations de référence sur les schémas

Vous trouverez les informations de référence complètes sur le schéma pour les stratégies clientes dans les informations de référence sur nuget.config