Partilhar via


Aviso NuGet NU3043

Valor inválido para --certificate-fingerprint a dotnet nuget sign opção no comando ou a CertificateFingerprint opção no NuGet.exe sign comando. O valor deve ser uma impressão digital de certificado SHA-256, SHA-384 ou SHA-512 (em hexadecimal).

Esse aviso é promovido para um erro no SDK do .NET 10 e será promovido a um erro no NuGet.exe em torno do lançamento do .NET 10.

Questão

A partir do .NET 9 e NuGet.exe 6.12, o aviso NU3043 é gerado quando uma impressão digital de certificado SHA-1 é passada para os comandos sign. O SHA-1 é considerado inseguro e não deve mais ser usado.

Solução

Para resolver esse aviso, certifique-se de fornecer uma impressão digital de certificado SHA-256, SHA-384 ou SHA-512 válida (em hexadecimal) para a --certificate-fingerprint opção no dotnet nuget sign comando ou a CertificateFingerprint opção no NuGet.exe sign comando.

Você pode usar os scripts a seguir para calcular hashes da família SHA-2 para certificados.

PowerShell

Para usar o script, você precisa salvar o certificado em uma pasta local.

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

Se o certificado estiver no formato PEM ou CRT:

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

Se o certificado já estiver no formato DER:

sha256sum path/to/certificate

Sugestão

Para SHA-384 ou SHA-512, substitua sha256sum por sha384sum ou sha512sum, conforme necessário.