Options pour la vérification des packages NuGet signés

Réessayer les échecs racines non approuvés

Remarque

Ce problème s’applique uniquement à Windows pour les certificats racines du Programme de certification racine approuvé Microsoft.

Pendant la création de la chaîne de certificats, Windows récupère les certificats racines tiers pertinents lors de la première utilisation et les ajoute en tant que certificats racines approuvés localement. En interne, Windows lance cette récupération réseau avec un appel RPC et, si le système est suffisamment occupé, cet appel RPC peut échouer. Cet échec entraîne l’absence d’approbation locale du certificat racine. Ce problème peut se produire la première fois qu’un certificat racine est observé, mais une fois que le certificat racine a été approuvé localement, le problème ne se répète pas pour ce certificat. En règle générale, la génération de chaînes réussit avec plusieurs tentatives.

Pour les utilisateurs NuGet, les symptômes de ce problème sont que l’opération NuGet réussira généralement lors de nouvelles tentatives et l’une des opérations suivantes :

  • NU3028 avec un message tel que « Une chaîne de certification a été traitée, mais s’est terminée par un certificat racine qui n’est pas approuvé par le fournisseur d’approbation ».
  • NU3037 avec un message tel que « La période de validité de la signature principale du référentiel a expiré ».

Remarque

Cette option est disponible à partir de NuGet 6.0.0 et s’applique uniquement à l’échec spécifique à Windows décrit ci-dessus. L’option ne s’applique à aucun autre scénario et n’a aucun effet sur Linux ou macOS.

Avant le Kit de développement logiciel (SDK) NuGet 6.8.0 et .NET 8, cette option est désactivée par défaut.

À compter du Kit de développement logiciel (SDK) NuGet 6.8.0 et .NET 8, cette option est activée par défaut sur Windows. Il n'est pas nécessaire de définir explicitement la variable d'environnement, sauf si vous souhaitez remplacer la valeur par défaut de 3,1000 ou vous désengager. Pour ne pas participer, définissez la variable d'environnement avec la valeur 0.

Vous pouvez opter pour une nouvelle tentative expérimentale et automatique pour les échecs racines non approuvés sur Windows en définissant une variable d’environnement nommée NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY avec une valeur composée de 2 entiers positifs délimités par des virgules représentant le nombre de nouvelles tentatives et l’intervalle de veille en millisecondes, respectivement. Vous devez choisir des valeurs qui sont sensibles pour vous.

Par exemple, définissez la variable d’environnement sur une valeur 3,1000 comme suite :

set NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY=3,1000

…essayait jusqu’à 4 fois (tentative initiale plus 3 nouvelles tentatives) avec 1 seconde (1 000 ms) entre chaque essai.