NuGet 警告 NU3043
--certificate-fingerprint
选项(dotnet nuget sign
命令中)或CertificateFingerprint
选项(NuGet.exe sign
命令中)的值无效。 值必须是 SHA-256、SHA-384 或 SHA-512 证书指纹(以十六进制为单位)。
在 .NET 10 时间范围内,此警告将会升级为错误。
问题
.NET 9 和 NuGet.exe 6.12 开始,当将 SHA-1 证书指纹传递给签名命令时会引发 NU3043 警告。 SHA-1 被认为不安全,不应再使用。
解决方案
若要解决此警告,请确保为 --certificate-fingerprint
选项(dotnet nuget sign
命令中)或 CertificateFingerprint
选项(NuGet.exe sign
命令中)提供有效的 SHA-256、SHA-384 或 SHA-512 证书指纹(以十六进制为单位)。
客户可以使用以下 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()
}