Podpisy úložiště
Pokud zdroj balíčku podporuje přidávání podpisů úložiště do publikovaných balíčků, může klient určit podpisové certifikáty používané zdrojem balíčku. Tento prostředek umožňuje klientům zjistit, jestli se zfalšoval podepsaný balíček úložiště nebo jestli má neočekávaný podpisový certifikát.
Prostředek použitý k načtení informací o podpisu úložiště je RepositorySignatures
prostředek, který se nachází v indexu služby.
Vytváření verzí
Použije se následující @type
hodnota:
@type Hodnotu | Notes |
---|---|
RepositorySignatures/4.7.0 | Počáteční verze |
RepositorySignatures/4.9.0 | Podporováno klienty NuGet verze 4.9 nebo novějšími |
RepositorySignatures/5.0.0 | Povolí povolení allRepositorySigned . Podporováno klienty NuGet v5.0+ |
Základní adresa URL
Adresa URL vstupního @id
bodu pro následující rozhraní API je hodnota vlastnosti přidružené k výše uvedené hodnotě prostředku @type
. Toto téma používá zástupnou adresu URL {@id}
.
Všimněte si, {@id}
že na rozdíl od jiných prostředků se adresa URL musí obsluhovat přes PROTOKOL HTTPS.
Metody HTTP
Všechny adresy URL nalezené v prostředku podpisů úložiště podporují pouze metody GET
HTTP a HEAD
.
Index podpisů úložiště
Index podpisů úložiště obsahuje dva údaje:
- Zda jsou všechny balíčky nalezené ve zdroji úložiště podepsané tímto zdrojem balíčku.
- Seznam certifikátů používaných zdrojem balíčku k podepisování balíčků.
Ve většině případů se k seznamu certifikátů připojí jenom někdy. Nové certifikáty se při vypršení platnosti předchozího podpisového certifikátu přidají do seznamu a zdroj balíčku musí začít používat nový podpisový certifikát. Pokud se certifikát odebere ze seznamu, znamená to, že klient by už neměl považovat všechny podpisy balíčků vytvořené s odebraným podpisovým certifikátem za platné. V tomto případě je podpis balíčku (ale nemusí nutně být balíček) neplatný. Zásady klienta můžou umožňovat instalaci balíčku jako nepodepsaného.
V případě odvolání certifikátu (e.g. key ohrožení zabezpečení) se očekává, že zdroj balíčku znovu podepíše všechny balíčky podepsané ovlivněným certifikátem. Kromě toho by měl zdroj balíčku odebrat ovlivněný certifikát ze seznamu podpisových certifikátů.
Následující požadavek načte index podpisů úložiště.
GET {@id}
Index podpisu úložiště je dokument JSON, který obsahuje objekt s následujícími vlastnostmi:
Name | Type | Požaduje se | Notes |
---|---|---|---|
allRepositorySigned | boolean | ano | Musí být false ve verzi 4.7.0 a 4.9.0 zdroje. |
signingCertificates | pole objektů | ano |
allRepositorySigned
Logická hodnota je nastavená na false, pokud zdroj balíčku obsahuje některé balíčky, které nemají podpis úložiště. Pokud je logická hodnota nastavena na hodnotu true, všechny balíčky dostupné ve zdroji musí mít podpis úložiště vytvořený jedním z podpisových certifikátů uvedených v signingCertificates
.
Upozorňující
allRepositorySigned
Logická hodnota musí být v prostředcích 4.7.0 a 4.9.0 false. Klienti NuGet v4.7, v4.8 a v4.9 nemohou instalovat balíčky ze zdrojů, které jsou nastaveny allRepositorySigned
na true.
Pokud je logická hodnota nastavená na true, měl by v signingCertificates
poli allRepositorySigned
existovat jeden nebo více podpisových certifikátů. Pokud je pole prázdné a allRepositorySigned
je nastaveno na true, všechny balíčky ze zdroje by měly být považovány za neplatné, i když zásady klienta můžou stále umožňovat spotřebu balíčků. Každý prvek v tomto poli je objekt JSON s následujícími vlastnostmi.
Name | Type | Požaduje se | Notes |
---|---|---|---|
contentUrl | string | ano | Absolutní adresa URL veřejného certifikátu s kódováním DER |
Otisky prstů | objekt | ano | |
subject | string | ano | Rozlišující název subjektu od certifikátu |
issuer | string | ano | Rozlišující název vystavitele certifikátu |
notBefore | string | ano | Počáteční časové razítko doby platnosti certifikátu |
notAfter | string | ano | Koncové časové razítko doby platnosti certifikátu |
Mějte na paměti, že se vyžaduje obsluha contentUrl
přes PROTOKOL HTTPS. Tato adresa URL nemá žádný konkrétní vzor adresy URL a musí být dynamicky zjištěna pomocí tohoto dokumentu indexu podpisů úložiště.
Všechny vlastnosti v tomto objektu (kromě contentUrl
) musí být odvozeny z certifikátu nalezeného na contentUrl
adrese .
Tyto odvozené vlastnosti jsou poskytovány jako pohodlí pro minimalizaci odezvy.
Objekt fingerprints
má následující vlastnosti:
Name | Type | Požaduje se | Notes |
---|---|---|---|
2.16.840.1.101.3.4.2.1 | string | ano | Otisk prstu SHA-256 |
Název 2.16.840.1.101.3.4.2.1
klíče je identifikátor hash algoritmu SHA-256.
Všechny hodnoty hash musí být malé a šestnáctkové řetězcové reprezentace hodnoty hash hash.
Ukázkový požadavek
GET https://api.nuget.org/v3-index/repository-signatures/5.0.0/index.json
Ukázková odpověď
{
"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"
}
]
}