NuGet 패키지에 서명하여 패키지 소비자가 패키지의 신뢰성과 무결성의 유효성을 검사할 수 있도록 할 수 있습니다. 확인을 사용하도록 설정하면 패키지 소비자가 프로젝트를 빌드하거나 실행할 때 자동으로 발생하는 패키지 복원 작업 중에 .NET에서 서명된 패키지를 확인합니다.
NuGet 패키지 서명은 X.509 인증서를 기반으로 하며 서명된 패키지 확인을 위한 필수 조건은 코드 서명 및 타임스탬프 모두에 유효한 인증서 루트 저장소입니다.
.NET 6.0.400 SDK부터 NuGet은 .NET SDK에 포함된 인증서 번들을 사용하여 적합한 시스템 루트 저장소를 사용할 수 없는 서명된 패키지를 확인합니다. 이러한 번들은 Microsoft 신뢰할 수 있는 루트 프로그램에서 공급되며 Windows의 루트 저장소와 동일한 코드 서명 및 타임스탬핑 인증서를 포함합니다. 이러한 인증서 번들에는 NuGet.org 패키지를 확인하는 데 필요한 모든 루트 인증서가 포함되어야 합니다.
일부 NuGet 명령(예: sign
verify
및)은 항상 서명된 패키지 확인을 수행합니다.
각 운영 체제에 대한 다음 섹션에서는 다음을 설명합니다.
- 복원 작업 중 암시적 확인이 기본적으로 사용되는 경우
- 사용하도록 설정하는 방법.
- 사용되는 루트 저장소들입니다.
윈도우즈
패키지 복원 작업 중에는 항상 확인을 사용할 수 있습니다.
NuGet은 이미 범용 코드 서명 및 타임스탬프를 지원하는 Windows의 기본 루트 저장소를 사용합니다. .NET SDK 인증서 번들은 사용하지 않습니다. 서명된 패키지 확인 기능은 도입된 .NET SDK 버전의 Windows에서 지원됩니다.
리눅스
중요합니다
서명된 패키지 확인 기능이 .NET 5 SDK에 추가되었지만 .NET 6.0.400 SDK까지는 Linux에서 이 기능이 지원되지 않습니다. 6.0.400 이전 버전의 .NET SDK에서 서명된 패키지 확인을 사용하지 마세요.
.NET 8 SDK 이전에는 패키지 복원 작업 중에 기본적으로 확인을 사용할 수 없습니다. 옵트인하려면 환경 변수 DOTNET_NUGET_SIGNATURE_VERIFICATION
true
를 .로 설정합니다.
.NET 8 SDK부터 확인은 기본적으로 사용하도록 설정됩니다. 옵트아웃하려면 환경 변수 DOTNET_NUGET_SIGNATURE_VERIFICATION
를 .로 false
설정합니다.
코드 서명 인증서 확인을 위해 NuGet은 먼저 다음 위치에서 인증서 번들을 검색합니다.
/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
유효한 인증서 번들을 찾을 경우 NuGet은 코드 서명을 위해 .NET SDK의 인증서 번들보다 선호합니다. .NET SDK의 인증서 번들에 동일한 루트 인증서 집합이 포함되어 있는 경우 NuGet 서명된 패키지 확인이 성공해야 합니다. NuGet.org 서명된 패키지에 사용되는 것과 같은 루트 인증서가 없는 경우 NuGet 서명된 패키지 확인은 신뢰할 수 없는 상태(NU3018 또는 NU3028을 통해)로 실패합니다. 이 인증서 번들에 루트 인증서를 추가하면 인증에 성공할 수 있습니다. 그러나 .NET SDK 인증서 번들은 애플리케이션 전체 신뢰 저장소로 사용되는 반면, 이 인증서 번들은 시스템 차원의 신뢰 저장소라는 점에 유의하세요.
위의 위치에서 유효한 인증서 번들을 찾을 수 없는 경우 NuGet은 코드 서명에 .NET SDK의 인증서 번들을 사용하는 것으로 대체됩니다.
타임스탬핑 인증서를 검증하기 위해 NuGet은 항상 .NET SDK의 인증서 번들을 사용합니다.
macOS
패키지 복원 작업 중에는 기본적으로 확인을 사용할 수 없습니다. 옵트인하려면 환경 변수 DOTNET_NUGET_SIGNATURE_VERIFICATION
true
를 .로 설정합니다. 그러나 확인을 사용하도록 설정하지 않는 것이 좋습니다. 자세한 내용은 NuGet/Home#11985 및 NuGet/Home#11986을 참조하세요.
NuGet은 .NET SDK의 인증서 번들만 사용합니다.
중요합니다
서명된 패키지 확인 기능이 .NET 5 SDK에 추가되었지만 현재 macOS에서는 이 기능이 지원되지 않습니다. 6.0.400 이전 버전의 .NET SDK에서 서명된 패키지 확인을 사용하지 마세요. 기본적으로 사용하지 않도록 설정합니다.
참고하십시오
.NET