다음을 통해 공유


리포지토리 서명

패키지 원본이 게시된 패키지에 리포지토리 서명 추가를 지원하는 경우 클라이언트가 패키지 원본에서 사용하는 서명 인증서를 확인할 수 있습니다. 이 리소스를 사용하면 클라이언트가 리포지토리 서명된 패키지가 변조되었는지 또는 예기치 않은 서명 인증서가 있는지 검색할 수 있습니다.

이 리포지토리 서명 정보를 가져오는 데 사용되는 리소스는 서비스 인덱스에 있는 리소스입니다RepositorySignatures.

버전 관리

다음 @type 값이 사용됩니다.

@type 값 주의
RepositorySignatures/4.7.0 초기 릴리스
RepositorySignatures/4.9.0 NuGet v4.9+ 클라이언트에서 지원
RepositorySignatures/5.0.0 을 사용하도록 설정할 수 있습니다 allRepositorySigned. NuGet v5.0 이상 클라이언트에서 지원

기준 URL

다음 API의 진입점 URL은 afore멘션ed 리소스 @type 값과 연결된 속성의 값입니다@id. 이 항목에서는 자리 표시자 URL {@id}을 사용합니다.

다른 리소스와 {@id} 달리 URL은 HTTPS를 통해 제공되어야 합니다.

HTTP 메서드

리포지토리 서명 리소스에 있는 모든 URL은 HTTP 메서드 GETHEAD.

리포지토리 서명 인덱스

리포지토리 서명 인덱스에는 다음 두 가지 정보가 포함됩니다.

  1. 원본에 있는 모든 패키지가 이 패키지 원본에서 서명한 리포지토리인지 여부입니다.
  2. 패키지 원본에서 패키지에 서명하는 데 사용하는 인증서 목록입니다.

대부분의 경우 인증서 목록은 계속 추가됩니다. 이전 서명 인증서가 만료되고 패키지 원본이 새 서명 인증서 사용을 시작해야 하는 경우 새 인증서가 목록에 추가됩니다. 인증서가 목록에서 제거되면 제거된 서명 인증서로 만든 모든 패키지 서명이 클라이언트에서 더 이상 유효한 것으로 간주되지 않아야 합니다. 이 경우 패키지 서명(반드시 패키지는 아님)이 잘못되었습니다. 클라이언트 정책에서 패키지를 서명되지 않은 것으로 설치하도록 허용할 수 있습니다.

인증서 해지(e.g. key 손상)의 경우 패키지 원본은 영향을 받는 인증서로 서명된 모든 패키지에 다시 서명해야 합니다. 또한 패키지 원본은 서명 인증서 목록에서 영향을 받는 인증서를 제거해야 합니다.

다음 요청은 리포지토리 서명 인덱스를 가져옵니다.

GET {@id}

리포지토리 서명 인덱스는 다음 속성을 가진 개체를 포함하는 JSON 문서입니다.

속성 Type Required 주의
allRepositorySigned 부울 값 4.7.0 및 4.9.0 리소스에 있어야 false 합니다.
signingCertificates 개체의 배열

allRepositorySigned 패키지 원본에 리포지토리 서명이 없는 일부 패키지가 있는 경우 부울은 false로 설정됩니다. 부울이 true로 설정된 경우 원본에서 사용할 수 있는 모든 패키지에는 서명 인증서 중 하나가 생성한 리포지토리 서명이 있어야 멘션signingCertificates.

Warning

부울은 allRepositorySigned 4.7.0 및 4.9.0 리소스에서 false여야 합니다. NuGet v4.7, v4.8 및 v4.9 클라이언트는 true로 설정된 원본 allRepositorySigned 의 패키지를 설치할 수 없습니다.

부울이 true로 설정된 경우 allRepositorySigned 배열에 signingCertificates 하나 이상의 서명 인증서가 있어야 합니다. 배열이 비어 있고 allRepositorySigned true로 설정된 경우 클라이언트 정책에서 여전히 패키지 사용을 허용할 수 있지만 원본의 모든 패키지는 잘못된 것으로 간주되어야 합니다. 이 배열의 각 요소는 다음 속성을 가진 JSON 개체입니다.

속성 Type Required 주의
contentUrl string DER로 인코딩된 공용 인증서에 대한 절대 URL
지문 개체
주체 문자열 인증서와 주체 고유 이름
issuer string 인증서 발급자의 고유 이름
notBefore string 인증서 유효 기간의 시작 타임스탬프
notAfter string 인증서 유효 기간의 종료 타임스탬프

HTTPS를 contentUrl 통해 제공되어야 합니다. 이 URL에는 특정 URL 패턴이 없으며 이 리포지토리 서명 인덱스 문서를 사용하여 동적으로 검색해야 합니다.

이 개체의 모든 속성(제외 contentUrl)은 에 있는 contentUrl인증서에서 파생될 수 있어야 합니다. 이러한 파생 속성은 왕복을 최소화하기 위한 편의를 위해 제공됩니다.

fingerprints 개체의 속성은 다음과 같습니다.

속성 Type Required 주의
2.16.840.1.101.3.4.2.1 string SHA-256 지문

키 이름은 2.16.840.1.101.3.4.2.1 SHA-256 해시 알고리즘의 OID입니다.

모든 해시 값은 해시 다이제스트의 소문자, 16진수로 인코딩된 문자열 표현이어야 합니다.

샘플 요청

GET https://api.nuget.org/v3-index/repository-signatures/5.0.0/index.json

샘플 응답

{
  "allRepositorySigned": true,
  "signingCertificates": [
    {
      "fingerprints": {
        "2.16.840.1.101.3.4.2.1": "0e5f38f57dc1bcc806d8494f4f90fbcedd988b46760709cbeec6f4219aa6157d"
      },
      "subject": "CN=NuGet.org Repository by Microsoft, O=NuGet.org Repository by Microsoft, L=Redmond, S=Washington, C=US",
      "issuer": "CN=DigiCert SHA2 Assured ID Code Signing CA, OU=www.digicert.com, O=DigiCert Inc, C=US",
      "notBefore": "2018-04-10T00:00:00.0000000Z",
      "notAfter": "2021-04-14T12:00:00.0000000Z",
      "contentUrl": "https://api.nuget.org/v3-index/repository-signatures/certificates/0e5f38f57dc1bcc806d8494f4f90fbcedd988b46760709cbeec6f4219aa6157d.crt"
    },
    {
      "fingerprints": {
        "2.16.840.1.101.3.4.2.1": "5a2901d6ada3d18260b9c6dfe2133c95d74b9eef6ae0e5dc334c8454d1477df4"
      },
      "subject": "CN=NuGet.org Repository by Microsoft, O=NuGet.org Repository by Microsoft, L=Redmond, S=Washington, C=US",
      "issuer": "CN=DigiCert SHA2 Assured ID Code Signing CA, OU=www.digicert.com, O=DigiCert Inc, C=US",
      "notBefore": "2021-02-16T00:00:00.0000000Z",
      "notAfter": "2024-05-15T23:59:59.0000000Z",
      "contentUrl": "https://api.nuget.org/v3-index/repository-signatures/certificates/5a2901d6ada3d18260b9c6dfe2133c95d74b9eef6ae0e5dc334c8454d1477df4.crt"
    },
    {
      "fingerprints": {
        "2.16.840.1.101.3.4.2.1": "1f4b311d9acc115c8dc8018b5a49e00fce6da8e2855f9f014ca6f34570bc482d"
      },
      "subject": "CN=NuGet.org Repository by Microsoft, O=NuGet.org Repository by Microsoft, L=Redmond, S=Washington, C=US",
      "issuer": "CN=DigiCert Trusted G4 Code Signing RSA4096 SHA384 2021 CA1, O=\"DigiCert, Inc.\", C=US",
      "notBefore": "2024-02-23T00:00:00.0000000Z",
      "notAfter": "2027-05-18T23:59:59.0000000Z",
      "contentUrl": "https://api.nuget.org/v3-index/repository-signatures/certificates/1f4b311d9acc115c8dc8018b5a49e00fce6da8e2855f9f014ca6f34570bc482d.crt"
    }
  ]
}