Avviso NuGet NU3042

NuGet 6.6.0+ solo in Linux e macOS

The following X.509 root certificate is untrusted because it is not present in the certificate bundle at <file-path>.  For more information, see documentation for NU3042.
    Subject:  <certificate subject>
    Fingerprint (SHA-256):  <certificate fingerprint>
    Certificate (PEM):
<PEM-encoded certificate>

Problema

L'avviso NU3042 viene generato quando la verifica del pacchetto firmato non è riuscita perché non è stato trovato un certificato radice nel bundle del certificato radice attendibile appropriato, ovvero la firma del codice o il timestamp. Questo avviso verrà generato solo in Linux e macOS quando la verifica del pacchetto firmata è abilitata, mai in Windows. NU3042 deve accompagnare nu3018 o NU3028.

Ogni versione di .NET 7+ SDK contiene due bundle di certificati radice originati dal programma radice attendibile Microsoft. Un bundle di certificati contiene tutte le radici attendibili valide per la firma del codice, mentre l'altra contiene tutte le radici attendibili valide per il timestamp. NuGet usa questi bundle di certificati in Linux e macOS quando è abilitata la verifica del pacchetto firmata.

In Linux NuGet preferisce un bundle di certificati di firma del codice a livello di sistema rispetto al bundle del certificato di firma del codice di .NET SDK.

La causa radice di NU3042 è probabilmente una delle seguenti:

  • (solo Linux) Il bundle del certificato di firma del codice a livello di sistema non contiene il certificato radice a cui viene fatto riferimento nell'avviso.
  • I bundle di certificati di .NET SDK non sono aggiornati.

Per altre informazioni, vedere Verifica del pacchetto firmato NuGet.

Soluzione

In Linux, se si considera attendibile il certificato e si usa un bundle di certificato di firma del codice a livello di sistema, è consigliabile aggiungere il certificato radice al bundle. Questa soluzione potrebbe non essere adatta perché concederà attendibilità a livello di sistema.

Se i bundle di certificati di .NET SDK non sono aggiornati, eseguire l'aggiornamento a una versione più recente di .NET SDK.

Se tutto il resto non riesce, rifiutare esplicitamente la verifica del pacchetto firmato impostando la variabile DOTNET_NUGET_SIGNATURE_VERIFICATION di ambiente su false e aprendo un problema con il team NuGet per suggerire come migliorare la verifica del pacchetto firmato nella piattaforma.

Per altre informazioni, vedere Verifica del pacchetto firmato NuGet.