Sdílet prostřednictvím


Možnosti ověření podepsaného balíčku NuGet

Opakování nedůvěryhodných chyb kořenového adresáře

Poznámka:

Tento problém platí jenom pro systém Windows pro kořenové certifikáty v programu Microsoft Trusted Root Program.

Během sestavování řetězu certifikátů načte Systém Windows relevantní kořenové certifikáty třetích stran při prvním použití a přidá je jako místně důvěryhodné kořenové certifikáty. Systém Windows interně zahájí načtení této sítě voláním RPC a pokud je systém dostatečně zaneprázdněný, může toto volání RPC selhat. Výsledkem tohoto selhání je, že kořenový certifikát není místně důvěryhodný. K tomuto problému může dojít při prvním zjištění kořenového certifikátu, ale jakmile je kořenový certifikát místně důvěryhodný, problém se pro tento certifikát nebude opakovat. Řetězová budova bude obvykle úspěšná s opakovanými pokusy.

U uživatelů NuGetu příznaky tohoto problému jsou, že operace NuGet bude obvykle úspěšná při opakování a některé z následujících akcí:

  • NU3028 se zprávou typu "Certifikační řetězec se zpracoval správně, ale ukončil v kořenovém certifikátu, který není důvěryhodný poskytovatelem důvěryhodnosti".
  • NU3037 se zprávou, že vypršela doba platnosti primárního podpisu úložiště.

Poznámka:

Tato možnost je dostupná od NuGetu 6.0.0 a vztahuje se pouze na selhání specifické pro Windows popsané výše. Tato možnost se nevztahuje na žádný jiný scénář a nemá žádný vliv na Linux nebo macOS.

Před sadou NuGet 6.8.0 a .NET 8 SDK je tato možnost ve výchozím nastavení zakázaná.

Počínaje sadou NuGet 6.8.0 a .NET 8 SDK je tato možnost ve Výchozím nastavení ve Windows povolená. Proměnná prostředí nemusí být nastavena explicitně, pokud nechcete přepsat výchozí hodnotu 3,1000 nebo odhlásit. Pokud chcete vyjádřit výslovný nesouhlas, nastavte proměnnou prostředí s hodnotou 0.

Experimentální automatické opakování pro nedůvěryhodné kořenové chyby ve Windows můžete povolit nastavením proměnné prostředí s NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY hodnotou sestávající ze 2 kladných celých čísel oddělených čárkami, které představují počet opakování a interval spánku v milisekundách. Měli byste si vybrat hodnoty, které jsou pro vás rozumné.

Například nastavení proměnné prostředí na hodnotu podobné této:3,1000

set NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY=3,1000

... zkusit až 4krát (počáteční pokus plus 3 opakování) s 1 sekundou (1 000 ms) mezi jednotlivými pokusy.