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 magazyn główny certyfikatu, który jest ważny zarówno w przypadku podpisywania kodu, jak i znaczników czasu.

Począwszy od zestawu .NET 6.0.400 SDK, NuGet używa pakietów certyfikatów zawartych w zestawie SDK platformy .NET w celu sprawdzenia podpisanych pakietów, w których 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ć.
  • Używane są magazyny główne.

Windows

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

NuGet używa domyślnego magazynu 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.

Linux

Ważne

Mimo że funkcje weryfikacji podpisanego pakietu zostały dodane w zestawach SDK platformy .NET 5, funkcjonalność nie jest obsługiwana w systemie Linux, dopóki zestaw SDK platformy .NET 6.0.400. Nie używaj weryfikacji podpisanego pakietu z zestawem .NET SDK w wersjach starszych 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 falsewartość .

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, pakiet NuGet będzie preferować go w pakiecie certyfikatów zestawu SDK platformy .NET na potrzeby 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 stanem 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 zestawu SDK platformy .NET na potrzeby 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 pakietu z zestawem .NET SDK w wersjach starszych niż 6.0.400. Pozostaw to wyłączone domyślnie.

Zobacz też