Freigeben über


NuGet-Warnung NU3043

Ungültiger Wert für --certificate-fingerprint die Option im dotnet nuget sign Befehl oder der CertificateFingerprint Option im NuGet.exe sign Befehl. Der Wert muss ein SHA-256-, SHA-384- oder SHA-512-Zertifikatabdruck (hexadezimal) sein.

Diese Warnung wird zu einem Fehler um den .NET 10-Zeitrahmen heraufgestuft.

Problem

Ab .NET 9 und NuGet.exe 6.12 wird die NU3043-Warnung ausgelöst, wenn ein SHA-1-Zertifikatfingerabdruck an die Signierbefehle übergeben wird. SHA-1 gilt als unsicher und sollte nicht mehr verwendet werden.

Lösung

Um diese Warnung zu beheben, stellen Sie sicher, dass Sie einen gültigen SHA-256-, SHA-384- oder SHA-512-Zertifikatabdruck (hexadezimal) für die --certificate-fingerprint Option im dotnet nuget sign Befehl oder die CertificateFingerprint Option im NuGet.exe sign Befehl angeben.

Kunden können das folgende PowerShell-Skript verwenden, um SHA-2-Familienhashes für Zertifikate zu berechnen. Um das Skript zu verwenden, müssen Kunden das Zertifikat in einem lokalen Ordner speichern.

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