Share via


Gerenciar os limites de confiança do pacote

Os pacotes assinados não exigem nenhuma ação específica para serem instalados. No entanto, se o conteúdo tiver sido modificado depois da assinatura, a instalação será bloqueada com o erro NU3008.

Aviso

Os pacotes assinados com certificados não confiáveis são considerados não assinados e instalados sem avisos ou erros, como qualquer outro pacote não assinado.

Configurar os requisitos de assinatura do pacote

Observação

Requer o NuGet 4.9.0+ e o Visual Studio versão 15.9 e posterior no Windows

Você pode configurar o modo como os clientes do NuGet validam assinaturas de pacote, definindo o signatureValidationMode para require no arquivo nuget.config usando o comando nuget config.

nuget.exe config -set signatureValidationMode=require
  <config>
    <add key="signatureValidationMode" value="require" />
  </config>

Esse modo vai verificar se todos os pacotes são assinados por qualquer um dos certificados confiáveis no arquivo nuget.config. Esse arquivo permite que você especifique quais autores e/ou repositórios são confiáveis, com base na impressão digital do certificado.

Confiar no autor do pacote

Para confiar em pacotes com base na assinatura do autor, use o comando trusted-signers para definir a propriedade author no nuget.config.

nuget.exe  trusted-signers Add -Name MyCompanyCert -CertificateFingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 -FingerprintAlgorithm SHA256
<trustedSigners>
  <author name="MyCompanyCert">
    <certificate fingerprint="CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
  </author>
</trustedSigners>

Dica

Use o comando verifynuget.exe para obter o valor SHA256 da impressão digital do certificado.

Confiar em todos os pacotes de um repositório

Para confiar em pacotes com base na assinatura do repositório, use o elemento repository:

<trustedSigners>  
  <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
    <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B4676070...." 
                  hashAlgorithm="SHA256" 
                allowUntrustedRoot="false" />
  </repository>
</trustedSigners>

Confiar nos proprietários do pacote

Assinaturas de repositório incluem metadados adicionais para determinar os proprietários do pacote no momento do envio. Você pode restringir os pacotes de um repositório com base em uma lista de proprietários:

<trustedSigners>  
  <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
    <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B4676070...." 
                  hashAlgorithm="SHA256" 
                allowUntrustedRoot="false" />
      <owners>microsoft;nuget</owners>
  </repository>
</trustedSigners>

Se um pacote tiver vários proprietários e qualquer um desses proprietários estiver na lista de confiáveis, a instalação do pacote será bem-sucedida.

Certificados raiz não confiáveis

Em algumas situações, convém habilitar a verificação usando certificados não encadeados a uma raiz confiável no computador local. Você pode usar o atributo allowUntrustedRoot para personalizar esse comportamento.

Sincronizar certificados do repositório

Os repositórios de pacote devem anunciar os certificados que eles usam em seu índice de serviço. Eventualmente, o repositório atualizará esses certificados, por exemplo, quando o certificado expirar. Quando isso acontecer, os clientes com políticas específicas exigirão uma atualização à configuração a fim de incluir o certificado recém-adicionado. Você pode atualizar facilmente os signatários confiáveis associados a um repositório usando o comando trusted-signers syncnuget.exe.

Referência de esquema

A referência de esquema completa para as políticas do cliente pode ser encontrada na referência do nuget.config