Podepsané balíčky

NuGet 4.6.0+ a Visual Studio 2017 verze 15.6 a novější

Balíčky NuGet můžou obsahovat digitální podpis, který poskytuje ochranu před manipulovaným obsahem. Tento podpis je vytvořen z certifikátu X.509, který také přidává ověřovací důkazy ke skutečnému původu balíčku.

Podepsané balíčky poskytují nejsilnější komplexní ověřování. Existují dva různé typy podpisů NuGet:

  • Autor podpisu. Podpis autora zaručuje, že se balíček od podepsání autora nezměnil, bez ohledu na to, ze kterého úložiště nebo z jakého způsobu přenosu se balíček doručí. Kromě toho balíčky podepsané autorem poskytují další ověřovací mechanismus kanálu publikování nuget.org, protože podpisový certifikát musí být zaregistrovaný předem. Další informace naleznete v tématu Registrace certifikátů.
  • Podpis úložiště. Podpisy úložiště poskytují záruku integrity pro všechny balíčky v úložišti bez ohledu na to, jestli jsou podepsané nebo ne, i když jsou tyto balíčky získány z jiného umístění než původní úložiště, kde byly podepsány.

Podrobnosti o vytvoření podepsaného balíčku autora najdete v tématu Podpisové balíčky a příkaz znaménka NuGet. Podpisy balíčků můžete ověřit pomocí příkazu dotnet nuget verify nebo nuget verify .

Důležité

Podpisové balíčky pro vytváření obsahu v současnosti podporuje jenom nuget.exe ve Windows. Všechny balíčky nahrané do nuget.org se ale automaticky podepisují.

Požadavky na certifikáty

Podepisování balíčku vyžaduje podpisový certifikát kódu, což je speciální typ certifikátu, který je platný pro id-kp-codeSigning účely [RFC 5280 oddíl 4.2.1.12]. Kromě toho musí mít certifikát délku veřejného klíče RSA o délce 2048 bitů nebo vyšší.

Požadavky na časové razítko

Podepsané balíčky by měly obsahovat časové razítko RFC 3161, které zajistí platnost podpisu nad rámec doby platnosti podpisového certifikátu balíčku. Certifikát použitý k podepsání časového razítka musí být platný pro id-kp-timeStamping účely [RFC 5280 oddíl 4.2.1.12]. Kromě toho musí mít certifikát délku veřejného klíče RSA o délce 2048 bitů nebo vyšší.

Další technické podrobnosti najdete v technických specifikacích podpisu balíčku (GitHub).

Požadavky na podpis pro NuGet.org

nuget.org má další požadavky na přijetí podepsaného balíčku:

  • Primární podpis musí být podpis autora.
  • Primární podpis musí mít jedno platné časové razítko.
  • Certifikáty X.509 pro podpis autora i podpis časového razítka:
    • Musí mít veřejný klíč RSA 2048 bitů nebo vyšší.
    • Musí být v době ověření balíčku v nuget.org v době platnosti v aktuálním čase UTC.
    • Musí být zřetězený s důvěryhodnou kořenovou autoritou, která je ve výchozím nastavení v systému Windows důvěryhodná. Balíčky podepsané pomocí certifikátů vydaných svým držitelem jsou odmítnuty.
    • Musí být platný pro jeho účel:
      • Podpisový certifikát autora musí být platný pro podepisování kódu.
      • Certifikát časového razítka musí být platný pro časové razítko.
    • Při podpisu nesmí být odvolán. (V době odeslání to nemusí být známé, takže nuget.org pravidelně kontroluje stav odvolání).