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 im .NET 10 SDK heraufgestuft und wird in NuGet.exe .NET 10-Version auf einen Fehler 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.

Sie können die folgenden Skripts verwenden, um SHA-2-Familienhashes für Zertifikate zu berechnen.

PowerShell

Um das Skript zu verwenden, müssen Sie 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()
}

OpenSSL (Linux/macOS)

Wenn das Zertifikat im PEM- oder CRT-Format vorliegt:

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

Wenn das Zertifikat bereits im DER-Format vorhanden ist:

sha256sum path/to/certificate

Tipp

Ersetzen Sie für SHA-384 oder SHA-512 bei Bedarf sha256sum durch sha384sum oder sha512sum.