Sdílet prostřednictvím


Ověření podepsaného balíčku NuGet

Můžete podepsat balíček NuGet, který uživatelům balíčků umožní ověřit pravost a integritu balíčku. Pokud je povolené ověření, .NET během operace obnovení balíčku ověří podepsané balíčky, ke kterým dojde automaticky, když příjemce balíčku sestaví nebo spustí svůj projekt.

Podpisy balíčků NuGet jsou založené na certifikátech X.509 a předpokladem pro ověření podepsaného balíčku je kořenové úložiště certifikátů, které je platné pro podepisování kódu i časové razítko.

Počínaje sadou .NET 6.0.400 SDK používá NuGet sady certifikátů zahrnuté v sadě .NET SDK k ověření podepsaných balíčků, kde není dostupné vhodné systémové kořenové úložiště. Tyto sady jsou zdrojové z důvěryhodného kořenového programu Microsoftu a obsahují stejné podpisové a časové razítko certifikátů jako kořenové úložiště ve Windows. Tyto sady certifikátů by měly obsahovat všechny kořenové certifikáty potřebné k ověření balíčků z NuGet.org.

Některé příkazy NuGet, například sign a verify, vždy provádějí ověření podepsaného balíčku.

Následující části pro každý operační systém popisují:

  • Pokud je implicitní ověření během operací obnovení ve výchozím nastavení povolené.
  • Jak ji povolit.
  • Jaké kořenové úložiště se používají.

Windows

Při operacích obnovení balíčku je vždy povoleno ověření.

NuGet používá výchozí kořenové úložiště ve Windows, které už podporuje podepisování kódu pro obecné účely a časové razítko. Sady .NET SDK sady Sdk se nepoužívají. Všechny funkce ověření podepsaného balíčku jsou podporovány ve Windows ve verzi sady .NET SDK, ve které byla zavedena.

Linux

Důležité

Přestože se funkce ověření podepsaného balíčku přidala do sady .NET 5 SDK, funkce se v Linuxu nepodporují, dokud .NET 6.0.400 SDK. Nepoužívejte ověření podepsaného balíčku ve verzích sady .NET SDK starších než 6.0.400.

Před sadou .NET 8 SDK je při operacích obnovení balíčku ve výchozím nastavení zakázáno ověření. Pokud se chcete přihlásit, nastavte proměnnou DOTNET_NUGET_SIGNATURE_VERIFICATION prostředí na truehodnotu .

Počínaje sadou .NET 8 SDK je ve výchozím nastavení povolené ověřování. Pokud se chcete odhlásit, nastavte proměnnou DOTNET_NUGET_SIGNATURE_VERIFICATION prostředí na falsehodnotu .

Pro ověření certifikátu podpisového kódu nuGet nejprve testuje sadu certifikátů v následujícím umístění:

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

Pokud se najde platná sada certifikátů, NuGet ji bude upřednostňovat před sadou certifikátů sady .NET SDK pro podepisování kódu. Pokud obsahuje alespoň stejnou sadu kořenových certifikátů jako sada certifikátů sady .NET SDK, mělo by ověření podepsaného balíčku NuGet proběhnout úspěšně. Pokud chybí kořenové certifikáty, jako jsou certifikáty použité v podepsaných balíčcích na NuGet.org, ověření podepsaného balíčku NuGet selže s nedůvěryhodným stavem (prostřednictvím NU3018 nebo NU3028). Přidání kořenových certifikátů do této sady certifikátů může povolit úspěšné ověření; Mějte však na paměti, že tato sada certifikátů je systémové úložiště důvěryhodnosti, zatímco sady certifikátů sady .NET SDK se používají jako úložiště důvěryhodnosti pro celou aplikaci.

Pokud se na výše uvedeném místě nenajde platná sada certifikátů, NuGet se vrátí k použití sady .NET SDK pro podepisování kódu.

Pro ověření časového razítka certifikát nuGet vždy používá sadu certifikátů sady .NET SDK pro časové razítko.

macOS

Při operacích obnovení balíčku je ve výchozím nastavení zakázáno ověření. Pokud se chcete přihlásit, nastavte proměnnou DOTNET_NUGET_SIGNATURE_VERIFICATION prostředí na truehodnotu . Doporučujeme ale nepovolovat ověření. Další informace najdete v tématu NuGet/Home#11985 a NuGet/Home#11986.

NuGet používá pouze sady certifikátů sady .NET SDK.

Důležité

Přestože byla v sadě .NET 5 SDK přidána funkce ověření podepsaného balíčku, funkce se v současné době v macOS nepodporují. Nepoužívejte ověření podepsaného balíčku ve verzích sady .NET SDK starších než 6.0.400. Ponechte ji ve výchozím nastavení zakázanou.

Viz také