Aracılığıyla paylaş


NuGet Uyarısı NU3043

Komuttaki dotnet nuget sign seçenek veya komuttaki CertificateFingerprint seçenek NuGet.exe sign için --certificate-fingerprint geçersiz değer. Değer bir SHA-256, SHA-384 veya SHA-512 sertifika parmak izi olmalıdır (onaltılık olarak).

Bu uyarı .NET 10 SDK'sında bir hataya yükseltilir ve .NET 10'un sürümüyle ilgili NuGet.exe bir hataya yükseltilir.

Sorun

.NET 9 ve NuGet.exe 6.12'den başlayarak, imzalama komutlarına sha-1 sertifika parmak izi geçirildiğinde NU3043 uyarısı tetiklenir. SHA-1 güvenli değildir ve artık kullanılmamalıdır.

Çözüm

Bu uyarıyı çözmek için, komuttaki seçenek veya CertificateFingerprint komuttaki seçenek NuGet.exe signdotnet nuget sign için --certificate-fingerprint geçerli bir SHA-256, SHA-384 veya SHA-512 sertifika parmak izi (onaltılık) sağladığından emin olun.

Sertifikalar için SHA-2 ailesi karmalarını hesaplamak için aşağıdaki betikleri kullanabilirsiniz.

PowerShell

Betiği kullanmak için sertifikayı yerel bir klasöre kaydetmeniz gerekir.

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

Sertifika PEM veya CRT biçimindeyse:

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

Sertifika zaten DER biçimindeyse:

sha256sum path/to/certificate

Tip

SHA-384 veya SHA-512 için sha256sum değerini sha384sum veya sha512sum ile gerektiği gibi değiştirin.