Partager via


Vérification du package signé NuGet

Vous pouvez signer un package NuGet pour permettre aux consommateurs de packages de valider l’authenticité et l’intégrité du package. Si la vérification est activée, .NET vérifie les packages signés lors d’une opération de restauration de package, qui se produit automatiquement lorsqu’un consommateur de packages génère ou exécute son projet.

Les signatures des packages NuGet sont basées sur des certificats X.509, et une condition préalable à la vérification des packages signés est un magasin racine des certificats valide pour la signature de code et l'horodatage.

À compter du Kit de développement logiciel (SDK) .NET 6.0.400, NuGet utilise des ensembles de certificats inclus dans le Kit de développement logiciel (SDK) .NET pour vérifier les packages signés où un magasin racine système approprié n’est pas disponible. Ces bundles proviennent du Microsoft Trusted Root Program ; ils contiennent les mêmes certificats de signature de code et d’horodatage que le magasin racine sur Windows. Ces ensembles de certificats doivent contenir tous les certificats racines nécessaires pour vérifier les packages de NuGet.org.

Certaines commandes NuGet, telles que sign et verify, effectuent toujours une vérification de package signé.

Les sections suivantes pour chaque système d’exploitation décrivent :

  • Lorsque la vérification implicite pendant les opérations de restauration est activée par défaut.
  • Comment l’activer.
  • Quels magasins racines sont utilisés.

Fenêtres

La vérification est toujours activée pendant les opérations de restauration de package.

NuGet utilise le magasin racine par défaut sur Windows, qui prend déjà en charge la signature de code à usage général et l’horodatage. Les bundles de certificats du Kit de développement logiciel (SDK) .NET ne sont pas utilisés. Toutes les fonctionnalités de vérification de package signé sont prises en charge sur Windows dans la version du Kit de développement logiciel (SDK) .NET dans laquelle elle a été introduite.

Linux

Importante

Bien que la vérification des packages signés ait été ajoutée dans les kits de développement logiciel .NET 5, cette prise en charge n'est pas disponible sur Linux jusqu'à la version .NET 6.0.400 SDK. N’utilisez pas la vérification de package signé avec les versions du Kit de développement logiciel (SDK) .NET antérieures à la version 6.0.400.

Avant le Kit de développement logiciel (SDK) .NET 8, la vérification est désactivée par défaut pendant les opérations de restauration de package. Pour activer l'option, définissez la variable d’environnement DOTNET_NUGET_SIGNATURE_VERIFICATION sur true.

À compter du Kit de développement logiciel (SDK) .NET 8, la vérification est activée par défaut. Pour désactiver, définissez la variable DOTNET_NUGET_SIGNATURE_VERIFICATION d’environnement sur false.

Pour la vérification du certificat de signature de code, NuGet sonde d’abord un ensemble de certificats à l’emplacement suivant :

/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem

Si un bundle de certificats valide est trouvé, NuGet le préfère sur le bundle de certificats du Kit de développement logiciel (SDK) .NET pour la signature de code. S’il contient au moins le même ensemble de certificats racines que le bundle de certificats du Kit de développement logiciel (SDK) .NET, la vérification du package signé NuGet doit réussir. S’il ne dispose pas de certificats racines, comme ceux utilisés dans les packages signés sur NuGet.org, la vérification du package signé NuGet échoue avec un état non approuvé (via NU3018 ou NU3028). L’ajout de certificats racines à ce bundle de certificats peut permettre la vérification réussie ; Toutefois, gardez à l’esprit que ce bundle de certificats est un magasin d’approbations à l’échelle du système, tandis que les bundles de certificats du SDK .NET sont utilisés comme magasin d’approbations à l’échelle de l’application.

Si un bundle de certificats valide n’est pas trouvé à l’emplacement ci-dessus, NuGet revient à utiliser le bundle de certificats du Kit de développement logiciel (SDK) .NET pour la signature de code.

Pour la vérification du certificat d’horodatage, NuGet utilise toujours le bundle de certificats du Kit de développement logiciel (SDK) .NET pour l’horodatage.

macOS

La vérification est désactivée par défaut pendant les opérations de restauration de package. Pour activer l'option, définissez la variable d’environnement DOTNET_NUGET_SIGNATURE_VERIFICATION sur true. Toutefois, nous vous recommandons de ne pas activer la vérification. Pour plus d’informations, consultez NuGet/Home#11985 et NuGet/Home#11986.

NuGet utilise uniquement les bundles de certificats du Kit de développement logiciel (SDK) .NET.

Importante

Bien que la fonctionnalité de vérification de package signé ait été ajoutée dans le Kit de développement logiciel (SDK) .NET 5, la fonctionnalité n’est actuellement pas prise en charge sur macOS. N’utilisez pas la vérification de package signé avec les versions du Kit de développement logiciel (SDK) .NET antérieures à la version 6.0.400. Laissez-le désactivé par défaut.

Voir aussi