NuGet-Warnung NU3042

NuGet 6.6.0+ nur unter Linux und macOS

Das folgende X.509-Stammzertifikat ist nicht vertrauenswürdig, da es nicht im Zertifikatbundle unter <file-path> vorhanden ist. Weitere Informationen finden Sie in der Dokumentation zu NU3042.
    Antragsteller: <Zertifikats-Antragsteller>
    Fingerabdruck (SHA-256): <Zertifikatfingerabdrücke>
    Zertifikat (PEM):
<PEM-codiertes Zertifikat>

Problem

Warnung NU3042 wird ausgelöst, wenn die Überprüfung des signierten Pakets fehlgeschlagen ist, da ein Stammzertifikat im entsprechenden vertrauenswürdigen Stammzertifikat-Bundle nicht gefunden wurde, entweder Codesignatur oder Zeitstempel. Diese Warnung wird nur unter Linux und macOS ausgelöst, wenn die Überprüfung signierter Pakete aktiviert ist, niemals unter Windows. NU3042 sollte ein NU3018 oder NU3028 begleiten.

Jede .NET-7+-SDK-Version enthält zwei Stammzertifikat-Bundle, die aus dem vertrauenswürdigen Microsoft-Root-Programm stammen. Ein Zertifikatbundle enthält alle vertrauenswürdigen Wurzeln, die für die Codesignierung gültig sind, während die andere alle vertrauenswürdigen Wurzeln enthält, die für das Zeitstempeln gültig sind. NuGet verwendet diese Zertifikatpakete unter Linux und macOS, wenn die Überprüfung signierter Pakete aktiviert ist.

Unter Linux bevorzugt NuGet ein systemweites Code Signing Certificate Bundle gegenüber dem Code Signing Certificate Bundle des .NET SDK.

Die Grundursache für NU3042 ist wahrscheinlich eine der folgenden:

  • (Nur Linux) Das systemweite Codesignaturzertifikat-Bundle enthält nicht das Stammzertifikat, auf das in der Warnung verwiesen wird.
  • Die Zertifikatpakete des .NET SDK sind veraltet.

Weitere Informationen finden Sie unter Überprüfung von signierten NuGet-Paketen.

Lösung

Wenn Sie unter Linux dem Zertifikat vertrauen und ein systemweites Codesignaturzertifikat-Bundle verwenden, sollten Sie das Stammzertifikat zum Bundle hinzufügen. Diese Lösung ist möglicherweise nicht geeignet, da sie systemweites Vertrauen gewährt.

Wenn die Zertifikatpakete des .NET SDK veraltet sind, aktualisieren Sie auf eine neuere Version des .NET SDK.

Wenn alles andere fehlschlägt, kündigen Sie die Überprüfung des signierten Pakets, indem Sie die Umgebungsvariable DOTNET_NUGET_SIGNATURE_VERIFICATION auf false setzen und öffnen Sie eine Anfrage an das NuGet-Team, um vorzuschlagen, wie die Überprüfung von signierten Paketen auf Ihrer Plattform verbessert werden kann.

Weitere Informationen finden Sie unter Überprüfung von signierten NuGet-Paketen.