NuGet 警告 NU3043
dotnet nuget sign
コマンドの--certificate-fingerprint
オプションまたはNuGet.exe sign
コマンドのCertificateFingerprint
オプションの値が無効です。 値は、SHA-256、SHA-384、または SHA-512 証明書フィンガープリント (16 進数) である必要があります。
この警告は、.NET 10 の時間枠においてエラーに昇格されます。
問題点
.NET 9 および NuGet.exe 6.12 以降では、SHA-1 証明書フィンガープリントが署名コマンドに渡されると、NU3043 警告が発生します。 SHA-1 は安全でないと見なされるため、使用できなくなりました。
解決策
この警告を解決するには、dotnet nuget sign
コマンドの --certificate-fingerprint
オプションまたは NuGet.exe sign
コマンドの CertificateFingerprint
オプションに対して、有効な SHA-256、SHA-384、または SHA-512 証明書フィンガープリント (16 進数) を必ず指定するようにしてください。
顧客は、次の PowerShell スクリプトを使用して、証明書の SHA-2 ファミリ ハッシュを計算できます。 スクリプトを使用するには、証明書をローカル フォルダーに保存する必要があります。
$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()
}