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()
}