Предупреждение NuGet NU3042
NuGet 6.6.0+ только в Linux и macOS
Следующий корневой сертификат X.509 недоверен, так как он отсутствует в пакете сертификатов по <пути к файлу>. Дополнительные сведения см. в документации по NU3042.
Тема: <субъект сертификата>
Отпечатки пальцев (SHA-256): <отпечаток сертификата>
Сертификат (PEM):
<Сертификат в кодировке PEM>
Проблема
Предупреждение NU3042 возникает при сбое проверки подписанного пакета, так как корневой сертификат не найден в соответствующем пакете доверенных корневых сертификатов, подписи кода или метки времени. Это предупреждение будет возникать только в Linux и macOS при включенной проверке подписанного пакета, никогда не в Windows. NU3042 должен сопровождать NU3018 или NU3028.
Каждый выпуск пакета SDK для .NET 7+ содержит два пакета корневых сертификатов, исходных из доверенной корневой программы Майкрософт. Один пакет сертификатов содержит все доверенные корни, допустимые для подписывания кода, а другие содержат все доверенные корни, допустимые для метки времени. NuGet использует эти пакеты сертификатов в Linux и macOS при включенной проверке подписанного пакета.
В Linux NuGet предпочитает пакет сертификатов подписывания кода на уровне системы в пакете сертификатов подписывания кода пакета SDK для .NET.
Первопричина NU3042, скорее всего, одна из следующих причин:
- (только Для Linux) Пакет сертификатов подписывания кода на уровне системы не содержит корневой сертификат, на который ссылается предупреждение.
- Пакеты сертификатов пакета SDK для .NET устарели.
Дополнительные сведения см. в статье о проверке подписанного пакета NuGet.
Решение
В Linux, если вы доверяете сертификату и используете пакет сертификатов подписывания кода на уровне системы, рассмотрите возможность добавления корневого сертификата в пакет. Это решение может не подходить, так как оно предоставит системное доверие.
Если пакеты сертификатов пакета SDK для .NET устарели, обновите его до более недавнего выпуска пакета SDK для .NET.
Если все остальные не удается, отказаться от проверки подписанного пакета, задав переменную DOTNET_NUGET_SIGNATURE_VERIFICATION
false
среды и откройте проблему с командой NuGet, чтобы предложить, как можно улучшить проверку подписанного пакета на вашей платформе.
Дополнительные сведения см. в статье о проверке подписанного пакета NuGet.