Udostępnij za pośrednictwem


Weryfikacja podpisanego pakietu NuGet

Możesz podpisać pakiet NuGet , aby umożliwić konsumentom pakietów weryfikowanie autentyczności i integralności pakietu. Jeśli weryfikacja jest włączona, platforma .NET weryfikuje podpisane pakiety podczas operacji przywracania pakietu, która występuje automatycznie, gdy użytkownik pakietu kompiluje lub uruchamia projekt.

Podpisy pakietów NuGet są oparte na certyfikatach X.509, a warunkiem wstępnym weryfikacji podpisanego pakietu jest repozytorium główne certyfikatów, które jest ważne zarówno do podpisywania kodu, jak i dla znacznika czasowego.

Począwszy od pakietu SDK .NET 6.0.400, NuGet używa zestawów certyfikatów zawartych w pakiecie SDK .NET w celu weryfikacji podpisanych pakietów, gdzie odpowiedni magazyn główny systemu jest niedostępny. Te pakiety pochodzą z zaufanego programu głównego firmy Microsoft i zawierają te same certyfikaty podpisywania kodu i sygnatury czasowej co magazyn główny w systemie Windows. Te pakiety certyfikatów powinny zawierać wszystkie certyfikaty główne niezbędne do zweryfikowania pakietów z NuGet.org.

Niektóre polecenia NuGet, takie jak sign i verify, zawsze wykonują weryfikację podpisanego pakietu.

W poniższych sekcjach dla każdego systemu operacyjnego opisano:

  • Gdy weryfikacja niejawna podczas operacji przywracania jest domyślnie włączona.
  • Jak ją włączyć.
  • Jakie magazyny główne są używane.

Windows

Weryfikacja jest zawsze włączona podczas operacji przywracania pakietu.

NuGet używa domyślnego sklepu głównego w systemie Windows, który obsługuje już podpisywanie kodu ogólnego przeznaczenia i znaczniki czasu. Pakiety certyfikatów zestawu .NET SDK nie są używane. Wszystkie funkcje weryfikacji podpisanego pakietu są obsługiwane w systemie Windows w wersji zestawu .NET SDK, w której została wprowadzona.

Linuxa

Ważne

Chociaż weryfikacja podpisanych pakietów została dodana w SDK platformy .NET 5, funkcjonalność ta nie jest obsługiwana na systemie Linux aż do SDK platformy .NET 6.0.400. Nie używaj weryfikacji podpisanego cyfrowo pakietu z pakietem .NET SDK w wersjach wcześniejszych niż 6.0.400.

Przed zestawem .NET 8 SDK weryfikacja jest domyślnie wyłączona podczas operacji przywracania pakietów. Aby wyrazić zgodę, ustaw zmienną środowiskową DOTNET_NUGET_SIGNATURE_VERIFICATION na true.

Począwszy od zestawu .NET 8 SDK, weryfikacja jest domyślnie włączona. Aby zrezygnować, ustaw zmienną środowiskową DOTNET_NUGET_SIGNATURE_VERIFICATION na wartość false.

W przypadku weryfikacji certyfikatu podpisywania kodu narzędzie NuGet najpierw sonduje pakiet certyfikatów w następującej lokalizacji:

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

Jeśli zostanie znaleziony prawidłowy pakiet certyfikatów, NuGet będzie preferować ten pakiet nad pakiet certyfikatów zestawu SDK platformy .NET do podpisywania kodu. Jeśli zawiera co najmniej ten sam zestaw certyfikatów głównych co pakiet certyfikatów zestawu SDK platformy .NET, weryfikacja podpisanego pakietu NuGet powinna zakończyć się pomyślnie. Jeśli brakuje certyfikatów głównych, takich jak używane w podpisanych pakietach w NuGet.org, weryfikacja podpisanych pakietów NuGet zakończy się niepowodzeniem ze statusem niezaufanym (za pośrednictwem NU3018 lub NU3028). Dodanie certyfikatów głównych do tego pakietu certyfikatów może umożliwić pomyślną weryfikację; Należy jednak pamiętać, że ten pakiet certyfikatów jest magazynem zaufania dla całego systemu, natomiast pakiety certyfikatów zestawu SDK platformy .NET są używane jako magazyn zaufania dla całej aplikacji.

Jeśli w powyższej lokalizacji nie znaleziono prawidłowego pakietu certyfikatów, pakiet NuGet wróci do korzystania z pakietu certyfikatów zestawu SDK platformy .NET na potrzeby podpisywania kodu.

W przypadku weryfikacji certyfikatu sygnatury czasowej, NuGet zawsze używa pakietu certyfikatów SDK platformy .NET do sygnatury czasowej.

macOS

Weryfikacja jest domyślnie wyłączona podczas operacji przywracania pakietu. Aby wyrazić zgodę, ustaw zmienną środowiskową DOTNET_NUGET_SIGNATURE_VERIFICATION na true. Zalecamy jednak, aby nie włączać weryfikacji. Aby uzyskać więcej informacji, zobacz NuGet/Home#11985 i NuGet/Home#11986.

Narzędzie NuGet używa tylko pakietów certyfikatów zestawu .NET SDK.

Ważne

Mimo że funkcje weryfikacji podpisanego pakietu zostały dodane w zestawach SDK platformy .NET 5, funkcja nie jest obecnie obsługiwana w systemie macOS. Nie używaj weryfikacji podpisanego cyfrowo pakietu z pakietem .NET SDK w wersjach wcześniejszych niż 6.0.400. Pozostaw to wyłączone domyślnie.

Zobacz także