共用方式為


NuGet 警告 NU3043

命令中選項的值--certificate-fingerprint無效,或CertificateFingerprint命令中的 NuGet.exe signdotnet nuget sign 選項。 此值必須是SHA-256、SHA-384或SHA-512憑證指紋(以十六進位為單位)。

此警告會升級為 .NET 10 SDK 中的錯誤,並將在 .NET 10 版本前後的 NuGet.exe 升級為錯誤。

問題

從 .NET 9 和 NuGet.exe 6.12 開始,當 SHA-1 憑證指紋傳遞至簽署命令時,會引發 NU3043 警告。 SHA-1 被視為不安全,不應再使用。

解決方案

若要解決此警告,請確定您為命令或命令CertificateFingerprint中的 選項NuGet.exe signdotnet nuget sign提供有效的SHA-256、SHA-384或SHA-512憑證指紋(以十六進位為單位)。--certificate-fingerprint

您可以使用下列指令碼來計算憑證的 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。