NuGet 경고 NU3042

Linux 및 macOS에서만 NuGet 6.6.0 이상

다음 X.509 루트 인증서는 파일 경로>의 인증서 번들에 <없기 때문에 신뢰할 수 없습니다. 자세한 내용은 NU3042에 대한 설명서를 참조하세요.
    제목: <인증서 주체>
    지문(SHA-256): <인증서 지문>
    인증서(PEM):
<PEM으로 인코딩된 인증서>

문제

코드 서명 또는 타임스탬핑 중 적절한 신뢰할 수 있는 루트 인증서 번들에서 루트 인증서를 찾을 수 없기 때문에 서명된 패키지 확인에 실패하면 NU3042 경고가 발생합니다. 이 경고는 서명된 패키지 확인이 사용하도록 설정된 경우에만 Linux 및 macOS에서 발생하며 Windows에서는 발생하지 않습니다. NU3042는 NU3018 또는 NU3028과 함께 제공되어야 합니다.

각 .NET 7+ SDK 릴리스에는 Microsoft 신뢰할 수 있는 루트 프로그램에서 제공되는 두 개의 루트 인증서 번들이 포함되어 있습니다. 하나의 인증서 번들에는 코드 서명에 유효한 신뢰할 수 있는 모든 루트가 포함되고 다른 한 번은 타임스탬핑에 유효한 모든 신뢰할 수 있는 루트를 포함합니다. 서명된 패키지 확인을 사용하는 경우 NuGet은 Linux 및 macOS에서 이러한 인증서 번들을 사용합니다.

Linux에서 NuGet은 .NET SDK의 코드 서명 인증서 번들보다 시스템 차원의 코드 서명 인증서 번들을 선호합니다.

NU3042의 근본 원인은 다음 중 하나일 수 있습니다.

  • (Linux에만 해당) 시스템 전체 코드 서명 인증서 번들에는 경고에서 참조되는 루트 인증서가 포함되어 있지 않습니다.
  • .NET SDK의 인증서 번들은 최신이 아닙니다.

자세한 내용은 NuGet 서명 패키지 확인을 참조 하세요.

솔루션

Linux에서 인증서를 신뢰하고 시스템 차원의 코드 서명 인증서 번들을 사용하는 경우 번들에 루트 인증서를 추가하는 것이 좋습니다. 이 솔루션은 시스템 차원의 신뢰를 부여하므로 적합하지 않을 수 있습니다.

.NET SDK의 인증서 번들이 최신 버전이 아니면 .NET SDK의 최신 릴리스로 업데이트합니다.

다른 모든 오류가 발생하면 환경 변수 DOTNET_NUGET_SIGNATURE_VERIFICATION false 를 설정하여 서명된 패키지 확인을 옵트아웃하고 NuGet 팀에 문제를 열어 플랫폼에서 서명된 패키지 확인을 개선할 수 있는 방법을 제안합니다.

자세한 내용은 NuGet 서명 패키지 확인을 참조 하세요.