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 allRepositorySigned izin 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 GET
HEAD
.
Depo imzaları dizini
Depo imzaları dizini iki bilgi içerir:
- Kaynakta bulunan tüm paketlerin bu paket kaynağı tarafından imzalanan depo olup olmadığı.
- 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 signingCertificates
belirtilen 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 contentUrl
bulunan 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"
}
]
}