Condividi tramite


Avviso NuGet NU3043

Valore non valido per --certificate-fingerprint l'opzione nel dotnet nuget sign comando o nell'opzione CertificateFingerprint nel NuGet.exe sign comando . Il valore deve essere un'impronta digitale del certificato SHA-256, SHA-384 o SHA-512 (in esadecimale).

Questo avviso viene alzato di livello a un errore in .NET 10 SDK e verrà promosso a un errore in NuGet.exe intorno al rilascio di .NET 10.

Problema

A partire da .NET 9 e NuGet.exe 6.12, viene generato un avviso NU3043 quando viene passata un'impronta digitale del certificato SHA-1 ai comandi di firma. SHA-1 è considerato non sicuro e non deve più essere usato.

Soluzione

Per risolvere questo avviso, assicurarsi di fornire un'impronta digitale del certificato SHA-256, SHA-384 o SHA-512 (in esadecimale) valida per l'opzione --certificate-fingerprint nel dotnet nuget sign comando o nell'opzione CertificateFingerprint nel NuGet.exe sign comando.

È possibile usare gli script seguenti per calcolare gli hash della famiglia SHA-2 per i certificati.

PowerShell

Per usare lo script, è necessario salvare il certificato in una cartella locale.

$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($certPath)
$stream = [System.IO.MemoryStream]::new($certificate.RawData)

Try
{
    (Get-FileHash -Algorithm SHA256 $stream).Hash
}
Finally
{
    $stream.Dispose()
    $certificate.Dispose()
}

OpenSSL (Linux/macOS)

Se il certificato è in formato PEM o CRT:

openssl x509 -in path/to/certificate -outform der | sha256sum

Se il certificato è già in formato DER:

sha256sum path/to/certificate

Suggerimento

Per SHA-384 o SHA-512, sostituire sha256sum con sha384sum o sha512sum in base alle esigenze.