Aracılığıyla paylaş


Depo imzaları

Paket kaynağı yayımlanan paketlere depo imzaları eklemeyi destekliyorsa, istemcinin paket kaynağı tarafından kullanılan imzalama sertifikalarını belirlemesi mümkündür. Bu kaynak, istemcilerin depo imzalı bir paketin üzerinde oynanıp oynanmadığını veya beklenmeyen bir imzalama sertifikası olup olmadığını algılamasına olanak tanır.

Bu depo imza bilgilerini getirmek için kullanılan kaynak, hizmet dizininde bulunan kaynaktırRepositorySignatures.

Sürüm oluşturma

Aşağıdaki @type değer kullanılır:

@type Değer Notlar
RepositorySignatures/4.7.0 İlk sürüm
RepositorySignatures/4.9.0 NuGet v4.9+ istemcileri tarafından desteklenir
RepositorySignatures/5.0.0 'nin etkinleştirilmesine allRepositorySignedizin verir. NuGet v5.0+ istemcileri tarafından desteklenir

Temel URL

Aşağıdaki API'lerin giriş noktası URL'si, yukarıda belirtilen kaynak @type değeriyle @id ilişkili özelliğin değeridir. Bu konu, yer tutucu URL'sini {@id}kullanır.

Diğer kaynakların aksine, URL'nin {@id} HTTPS üzerinden teslim edilmesi gerektiğini unutmayın.

HTTP yöntemleri

Depo imzaları kaynağında bulunan tüm URL'ler yalnızca ve HTTP yöntemlerini destekler GETHEAD.

Depo imzaları dizini

Depo imzaları dizini iki bilgi içerir:

  1. Kaynakta bulunan tüm paketlerin bu paket kaynağı tarafından imzalanan depo olup olmadığı.
  2. Paket kaynağı tarafından paketleri imzalamak için kullanılan sertifikaların listesi.

Çoğu durumda, sertifika listesi yalnızca sonuna eklenir. Önceki imzalama sertifikasının süresi dolduğunda ve paket kaynağının yeni bir imzalama sertifikası kullanmaya başlaması gerektiğinde listeye yeni sertifikalar eklenir. Bir sertifika listeden kaldırılırsa, bu, kaldırılan imzalama sertifikasıyla oluşturulan tüm paket imzalarının artık istemci tarafından geçerli olarak kabul edilmemesi gerektiği anlamına gelir. Bu durumda, paket imzası (ancak paket olması gerekmez) geçersizdir. İstemci ilkesi paketin imzasız olarak yüklenmesine izin verebilir.

Sertifika iptali (e.g. key güvenliğinin aşılmış olması) durumunda, paket kaynağının etkilenen sertifika tarafından imzalanan tüm paketleri yeniden imzalaması beklenir. Ayrıca, paket kaynağı etkilenen sertifikayı imzalama sertifikası listesinden kaldırmalıdır.

Aşağıdaki istek, depo imzaları dizinini getirir.

GET {@id}

Depo imza dizini, aşağıdaki özelliklere sahip bir nesne içeren bir JSON belgesidir:

Adı Tür Zorunlu Notlar
allRepositorySigned boolean evet 4.7.0 ve 4.9.0 kaynaklarında olmalıdır false
signingCertificates nesne dizisi evet

allRepositorySigned Paket kaynağında depo imzası olmayan bazı paketler varsa boole değeri false olarak ayarlanır. Boole değeri true olarak ayarlanırsa, kaynakta bulunan tüm paketlerin içinde signingCertificatesbelirtilen imzalama sertifikalarından biri tarafından oluşturulan bir depo imzası olmalıdır.

Uyarı

allRepositorySigned Boole değeri 4.7.0 ve 4.9.0 kaynaklarında false olmalıdır. NuGet v4.7, v4.8 ve v4.9 istemcileri true olarak ayarlanmış kaynaklardan allRepositorySigned paket yükleyemez.

Boole değeri true olarak ayarlandıysa allRepositorySigned dizide signingCertificates bir veya daha fazla imzalama sertifikası olmalıdır. Dizi boşsa ve allRepositorySigned true olarak ayarlanırsa, istemci ilkesi paketlerin tüketimine izin vermesine rağmen kaynaktan gelen tüm paketler geçersiz olarak kabul edilmelidir. Bu dizideki her öğe aşağıdaki özelliklere sahip bir JSON nesnesidir.

Adı Tür Zorunlu Notlar
contentUrl string evet DER ile kodlanmış genel sertifikanın mutlak URL'si
Parmak izi nesne evet
subject string evet Sertifikadan konu ayırt edici adı
yayınlayan string evet Sertifikayı verenin ayırt edici adı
notBefore string evet Sertifikanın geçerlilik süresinin başlangıç zaman damgası
notAfter string evet Sertifikanın geçerlilik süresinin bitiş zaman damgası

contentUrl https üzerinden hizmet vermek için gerekli olduğunu unutmayın. Bu URL'nin belirli bir URL düzeni yoktur ve bu depo imzaları dizin belgesi kullanılarak dinamik olarak bulunmalıdır.

Bu nesnedeki tüm özellikler (dışında contentUrl) konumunda contentUrlbulunan sertifikadan türetilebilir olmalıdır. Bu türetilebilir özellikler gidiş dönüşleri en aza indirmek için kolaylık olarak sağlanır.

fingerprints Nesnesi aşağıdaki özelliklere sahiptir:

Adı Tür Zorunlu Notlar
2.16.840.1.101.3.4.2.1 string evet SHA-256 parmak izi

Anahtar adı SHA-256 karma algoritmasının OID değeridir 2.16.840.1.101.3.4.2.1 .

Tüm karma değerleri, karma özetin küçük harfli, onaltılık kodlanmış dize gösterimleri olmalıdır.

Örnek isteği

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

Örnek yanıt

{
  "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"
    }
  ]
}