Поделиться через


Предупреждение NuGet NU3043

Недопустимое значение параметра --certificate-fingerprint в команде dotnet nuget sign или CertificateFingerprint параметре в команде NuGet.exe sign . Значение должно быть отпечатком сертификата SHA-256, SHA-384 или SHA-512 (шестнадцатеричным).

Это предупреждение повышено до ошибки в пакете SDK для .NET 10 и будет повышено до ошибки в NuGet.exe выпуске .NET 10.

Проблема

Начиная с .NET 9 и NuGet.exe 6.12, предупреждение NU3043 возникает при передаче отпечатка сертификата SHA-1 в команды подписи. SHA-1 считается небезопасным и больше не должен использоваться.

Решение

Чтобы устранить это предупреждение, убедитесь, что вы предоставили допустимый отпечаток сертификата SHA-256, SHA-384 или SHA-512 (в шестнадцатеричном) для --certificate-fingerprint параметра dotnet nuget sign в команде или CertificateFingerprint параметре в команде NuGet.exe sign .

Для вычисления хэшей семейства SHA-2 для сертификатов можно использовать следующие сценарии.

PowerShell

Чтобы использовать скрипт, необходимо сохранить сертификат в локальную папку.

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

Если сертификат находится в формате PEM или CRT:

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

Если сертификат уже находится в формате DER:

sha256sum path/to/certificate

Подсказка

Для SHA-384 или SHA-512 замените sha256sum sha384sum или sha512sum по мере необходимости.