分享方式:


NuGet 警告 NU3042

Linux 和 macOS 上的 NuGet 6.6.0+

下列 X.509 跟證書不受信任,因為它不存在於檔案路徑>的憑證套件組合中<。 如需詳細資訊,請參閱 NU3042 的檔。
    主體: <憑證主體>
    指紋 (SHA-256): <憑證指紋>
    憑證 (PEM):
<PEM 編碼的憑證>

問題

簽署的套件驗證失敗時,會引發警告 NU3042,因為在適當的受信任跟證書套件組合中找不到跟證書,即程式代碼簽署或時間戳。 只有在啟用已簽署的套件驗證時,才會在Linux和macOS上引發此警告,絕不會在Windows上引發。 NU3042 應隨附 NU3018NU3028

每個 .NET 7+ SDK 版本都包含兩個跟證書套件組合,其來源為 Microsoft 信任的根程式。 一個憑證套件組合包含程式代碼簽署的所有受信任根目錄,而另一個則包含所有有效的時間戳受信任根目錄。 啟用簽署的套件驗證時,NuGet 會在 Linux 和 macOS 上使用這些憑證套件組合。

在 Linux 上,NuGet 會偏好全系統程式代碼簽署憑證套件組合,而不是 .NET SDK 的程式碼簽署憑證套件組合。

NU3042 的根本原因可能是下列其中一項:

  • (僅限 Linux)全系統程式代碼簽署憑證套件組合不包含警告中所參考的跟證書。
  • .NET SDK 的憑證套件組合已過期。

如需詳細資訊,請參閱 NuGet 簽署套件驗證

解決方案

在 Linux 上,如果您信任憑證並使用全系統程式代碼簽署憑證套件組合,請考慮將跟證書新增至套件組合。 此解決方案可能不適合,因為它會授與全系統的信任。

如果 .NET SDK 的憑證套件組合已過期,請更新為最新版的 .NET SDK。

如果所有其他項目都失敗,請藉由將環境變數 DOTNET_NUGET_SIGNATURE_VERIFICATION 設定為 false ,並 開啟 NuGet 小組 的問題,以退出退出已簽署的套件驗證,以建議如何在您的平臺上改善已簽署的套件驗證。

如需詳細資訊,請參閱 NuGet 簽署套件驗證