Dela via


NuGet-varning NU3043

Ogiltigt värde för --certificate-fingerprint alternativet i dotnet nuget sign kommandot eller CertificateFingerprint alternativet i NuGet.exe sign kommandot. Värdet måste vara ett SHA-256-, SHA-384- eller SHA-512-certifikatsfingret (i hexadecimalt).

Den här varningen framhävs till ett fel i .NET 10 SDK och höjs upp till ett fel i NuGet.exe runt .NET 10-versionen.

Problematik

Från och med .NET 9 och NuGet.exe 6.12 utlöses NU3043-varningen när ett SHA-1-certifikatsfingret skickas till teckenkommandona. SHA-1 anses osäker och bör inte längre användas.

Lösning

Lös den här varningen genom att ange ett giltigt SHA-256-, SHA-384- eller SHA-512-certifikatavtryck (i hexadecimalt) för --certificate-fingerprint alternativet i dotnet nuget sign kommandot eller CertificateFingerprint alternativet i NuGet.exe sign kommandot.

Du kan använda följande skript för att beräkna SHA-2-familjens hashvärden för certifikat.

PowerShell

Om du vill använda skriptet måste du spara certifikatet i en lokal mapp.

$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)

Om certifikatet är i PEM- eller CRT-format:

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

Om certifikatet redan är i DER-format:

sha256sum path/to/certificate

Tips/Råd

För SHA-384 eller SHA-512 ersätter du sha256sum med sha384sum eller sha512sum efter behov.