Compartilhar via


Opções de verificação de pacote assinado do NuGet

Repetir falhas de raiz não confiáveis

Observação

Esse problema só se aplica ao Windows para certificados raiz no programa Microsoft Trusted Root.

Durante a criação da cadeia de certificados, o Windows busca certificados raiz de terceiros relevantes no primeiro uso e os adiciona como certificados raiz confiáveis localmente. Internamente, o Windows inicia essa busca na rede com uma chamada RPC e, se o sistema estiver suficientemente ocupado, essa chamada RPC poderá falhar. Essa falha faz com que o certificado raiz não seja confiável localmente. Esse problema pode ocorrer na primeira vez que um certificado raiz é observado, mas depois que o certificado raiz tiver sido localmente confiável, o problema não se repetirá para esse certificado. Normalmente, a construção de cadeias terá sucesso com tentativas.

Para usuários do NuGet, os sintomas desse problema são que a operação NuGet normalmente terá êxito na repetição e em uma das seguintes opções:

  • NU3028 com uma mensagem como “Uma cadeia de certificado processada corretamente, mas encerrada em um certificado raiz em que o provedor de confiança não confia”.
  • NU3037 com uma mensagem como "O período de validade da assinatura primária do repositório expirou".

Observação

Essa opção está disponível a partir do NuGet 6.0.0 e só se aplica à falha específica do Windows descrita acima. A opção não se aplica a nenhum outro cenário e não tem efeito no Linux nem no macOS.

Antes do SDK do NuGet 6.8.0 e do .NET 8, essa opção é desabilitada por padrão.

A partir do SDK do NuGet 6.8.0 e do .NET 8, essa opção é habilitada por padrão no Windows. A variável de ambiente não precisa ser definida explicitamente, a menos que você queira substituir o valor padrão de 3,1000 ou desativar. Para desativar, defina a variável de ambiente com um valor de 0.

Você pode habilitar uma repetição automática experimental para falhas de raiz não confiáveis no Windows, definindo uma variável de ambiente nomeada NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY com um valor que consiste em 2 inteiros positivos delimitados por vírgulas que representam a contagem de tentativas e o intervalo de suspensão em milissegundos, respectivamente. Você deve escolher valores que sejam razoáveis para você.

Por exemplo, definir a variável de 3,1000 ambiente para um valor semelhante a, portanto:

set NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY=3,1000

... tentaria até 4 vezes (tentativa inicial mais 3 tentativas) com 1 segundo (1.000 ms) entre cada tentativa.