서명된 패키지

NuGet 4.6.0 이상 및 Visual Studio 2017 버전 15.6 이상

NuGet 패키지에는 변조된 콘텐츠에 대한 보호를 제공하는 디지털 서명이 포함될 수 있습니다. 이 서명은 패키지의 실제 원본에 신뢰성 증명을 추가하는 X.509 인증서에서 생성됩니다.

서명된 패키지는 가장 강력한 엔드 투 엔드 유효성 검사를 제공합니다. NuGet 서명에는 두 가지 유형이 있습니다.

  • 작성자 서명입니다. 작성자 서명은 패키지가 배달되는 리포지토리 또는 전송 방법에 관계없이 작성자가 패키지에 서명한 이후 패키지가 수정되지 않도록 보장합니다. 또한 서명 인증서를 미리 등록해야 하므로 작성자가 서명한 패키지는 nuget.org 게시 파이프라인에 추가 인증 메커니즘을 제공합니다. 자세한 내용은 인증서 등록을 참조 하세요.
  • 리포지토리 서명입니다. 리포지토리 서명은 해당 패키지가 서명된 원래 리포지토리와 다른 위치에서 가져온 경우에도 작성자 서명 여부에 관계없이 리포지토리의 모든 패키지에 대한 무결성을 보장합니다.

만든 서명된 패키지를 만드는 방법에 대한 자세한 내용은 서명 패키지nuget 서명 명령을 참조하세요. dotnet nuget verify 또는 nuget verify 명령을 사용하여 패키지의 서명을 확인할 수 있습니다.

Important

작성자 서명 패키지는 현재 Windows의 nuget.exe 지원됩니다. 그러나 nuget.org 업로드된 모든 패키지는 자동으로 리포지토리에 서명됩니다.

인증서 요구 사항

패키지 서명에는 [RFC 5280 섹션 4.2.1.12] 용도로 id-kp-codeSigning 유효한 특수한 유형의 인증서인 코드 서명 인증서가 필요합니다. 또한 인증서에는 2048비트 이상의 RSA 공개 키 길이가 있어야 합니다.

타임스탬프 요구 사항

서명된 패키지에는 패키지 서명 인증서의 유효 기간을 초과하는 서명 유효성을 보장하기 위해 RFC 3161 타임스탬프가 포함되어야 합니다. 타임스탬프에 서명하는 데 사용되는 인증서는 [RFC 5280 섹션 4.2.1.12] 용도로 유효 id-kp-timeStamping 해야 합니다. 또한 인증서에는 2048비트 이상의 RSA 공개 키 길이가 있어야 합니다.

추가 기술 세부 정보는 패키지 서명 기술 사양(GitHub)에서 찾을 수 있습니다 .

NuGet.org 서명 요구 사항

nuget.org 서명된 패키지를 수락하기 위한 추가 요구 사항이 있습니다.

  • 기본 서명은 작성자 서명이어야 합니다.
  • 기본 서명에는 유효한 타임스탬프가 하나 있어야 합니다.
  • 작성자 서명과 해당 타임스탬프 서명 모두에 대한 X.509 인증서:
    • RSA 공개 키 2048비트 이상이 있어야 합니다.
    • nuget.org 패키지 유효성 검사 시 현재 UTC 시간당 유효 기간 내에 있어야 합니다.
    • Windows에서 기본적으로 신뢰할 수 있는 신뢰할 수 있는 루트 기관에 연결해야 합니다. 자체 발급 인증서로 서명된 패키지는 거부됩니다.
    • 해당 용도로 유효해야 합니다.
      • 작성자 서명 인증서는 코드 서명에 유효해야 합니다.
      • 타임스탬프 인증서는 타임스탬프에 유효해야 합니다.
    • 서명 시 해지해서는 안 됩니다. (제출 시 알 수 없으므로 주기적으로 해지 상태 다시 nuget.org 검사).