Sdílet prostřednictvím


Upozornění NuGet NU3043

Neplatná hodnota pro --certificate-fingerprint možnost v dotnet nuget sign příkazu nebo CertificateFingerprint možnost v NuGet.exe sign příkazu. Hodnota musí být otiskem certifikátu SHA-256, SHA-384 nebo SHA-512 (v šestnáctkové soustavě).

Toto upozornění se upřednostní na chybu v sadě .NET 10 SDK a bude povýšeno na chybu v NuGet.exe kolem verze .NET 10.

Problém

Počínaje rozhraním .NET 9 a NuGet.exe 6.12 se při předání otisku certifikátu SHA-1 do příkazů podpisu vyvolá upozornění NU3043. SHA-1 se považuje za nezabezpečené a už by se nemělo používat.

Řešení

Pokud chcete toto upozornění vyřešit, ujistěte se, že jako možnost v dotnet nuget sign příkazu nebo CertificateFingerprint v příkazu zadáte platný otisk certifikátu SHA-256, SHA-384 nebo SHA-512 (v šestnáctkové --certificate-fingerprint soustavěNuGet.exe sign).

K výpočtu hodnot hash řady SHA-2 pro certifikáty můžete použít následující skripty.

PowerShell

Pokud chcete skript použít, musíte certifikát uložit do místní složky.

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

Pokud je certifikát ve formátu PEM nebo CRT:

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

Pokud je certifikát již ve formátu DER:

sha256sum path/to/certificate

Návod

Pro SHA-384 nebo SHA-512 nahraďte sha256sum sha384sum nebo sha512sum podle potřeby.