Freigeben über


Überprüfung des signierten NuGet-Pakets

Sie können ein NuGet-Paket signieren , damit Paketkunden die Authentizität und Integrität des Pakets überprüfen können. Wenn die Überprüfung aktiviert ist, überprüft .NET signierte Pakete während eines Paketwiederherstellungsvorgangs, der automatisch auftritt, wenn ein Paketanwender sein Projekt erstellt oder ausführt.

NuGet-Paketsignaturen basieren auf X.509-Zertifikaten, und eine Voraussetzung für die Überprüfung signierter Pakete ist ein Zertifikatstammspeicher, der sowohl für die Codesignatur als auch für den Zeitstempel gültig ist.

Ab .NET 6.0.400 SDK verwendet NuGet Zertifikatbündel, die im .NET SDK enthalten sind, um signierte Pakete zu überprüfen, bei denen ein geeigneter Systemstammspeicher nicht verfügbar ist. Diese Bündel stammen aus dem Microsoft Trusted Root Program und enthalten dieselben Codesignatur- und Zeitstempelzertifikate wie der Stammspeicher unter Windows. Diese Zertifikatpakete sollten alle Stammzertifikate enthalten, die zum Überprüfen von Paketen von NuGet.org erforderlich sind.

Einige NuGet-Befehle, wie sign und verify, führen immer die Überprüfung von signierten Paketen durch.

In den folgenden Abschnitten für jedes Betriebssystem wird beschrieben:

  • Wenn die implizite Überprüfung bei Wiederherstellungsvorgängen standardmäßig aktiviert ist.
  • So aktivieren Sie es.
  • Welche Stammspeicher verwendet werden.

Fenster

Die Überprüfung ist während Paketwiederherstellungsvorgängen immer aktiviert.

NuGet verwendet den Standardstammspeicher unter Windows, der bereits allgemeine Codesignatur und Zeitstempel unterstützt. .NET SDK-Zertifikatpakete werden nicht verwendet. Alle Überprüfungsfunktionen für signierte Pakete werden unter Windows in der .NET SDK-Version unterstützt, in der sie eingeführt wurde.

Linux (Englisch)

Von Bedeutung

Obwohl die Überprüfungsfunktion für signiertes Paket im .NET 5 SDK hinzugefügt wurde, wird die Funktionalität unter Linux erst unter .NET 6.0.400 SDK unterstützt. Verwenden Sie die Überprüfung signierter Pakete nicht mit .NET SDK-Versionen vor 6.0.400.

Vor .NET 8 SDK ist die Überprüfung bei Paketwiederherstellungsvorgängen standardmäßig deaktiviert. Wenn Sie sich anmelden möchten, legen Sie die Umgebungsvariable DOTNET_NUGET_SIGNATURE_VERIFICATION auf true.

Ab .NET 8 SDK ist die Überprüfung standardmäßig aktiviert. Um dies zu deaktivieren, legen Sie die Umgebungsvariable DOTNET_NUGET_SIGNATURE_VERIFICATION auf false.

Für die Überprüfung des Codesignaturzertifikats überprüft NuGet zunächst ein Zertifikatpaket am folgenden Speicherort:

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

Wenn ein gültiges Zertifikatbundle gefunden wird, bevorzugt NuGet es gegenüber dem Zertifikatbundle des .NET SDK für die Codesignatur. Wenn sie mindestens den gleichen Satz von Stammzertifikaten wie das Zertifikatpaket des .NET SDK enthält, sollte die Überprüfung des signierten NuGet-Pakets erfolgreich sein. Wenn keine Stammzertifikate vorhanden sind, wie die in signierten Paketen auf NuGet.org verwendet werden, schlägt die Überprüfung des signierten NuGet-Pakets mit einem nicht vertrauenswürdigen Status (über NU3018 oder NU3028) fehl. Das Hinzufügen von Stammzertifikaten zu diesem Zertifikatpaket kann eine erfolgreiche Überprüfung ermöglichen. Beachten Sie jedoch, dass es sich bei diesem Zertifikatpaket um einen systemweiten Vertrauensspeicher handelt, während .NET SDK-Zertifikatbundle als anwendungsweiter Vertrauensspeicher verwendet werden.

Wenn am obigen Speicherort kein gültiges Zertifikatpaket gefunden wird, greift NuGet auf das Zertifikatpaket des .NET SDK für die Codesignierung zurück.

Für die Überprüfung des Zeitstempelzertifikats verwendet NuGet immer das Zertifikatbundle des .NET SDK zum Zeitstempeln.

macOS

Die Überprüfung ist während Paketwiederherstellungsvorgängen standardmäßig deaktiviert. Wenn Sie sich anmelden möchten, legen Sie die Umgebungsvariable DOTNET_NUGET_SIGNATURE_VERIFICATION auf true. Es wird jedoch empfohlen, die Überprüfung nicht zu aktivieren. Weitere Informationen finden Sie unter NuGet/Home#11985 und NuGet/Home#11986.

NuGet verwendet nur die Zertifikatbündel des .NET SDK.

Von Bedeutung

Obwohl die Überprüfungsfunktion für signiertes Paket in .NET 5 SDK hinzugefügt wurde, wird die Funktionalität unter macOS derzeit nicht unterstützt. Verwenden Sie die Überprüfung signierter Pakete nicht mit .NET SDK-Versionen vor 6.0.400. Lassen Sie sie standardmäßig deaktiviert.

Siehe auch