Condividi tramite


Gestire i limiti di attendibilità dei pacchetti

Non sono richieste azioni specifiche per l'installazione di pacchetti firmati. Tuttavia, se il contenuto è stato modificato dopo la firma, l'installazione viene bloccata con l'errore NU3008.

Avviso

I pacchetti firmati con certificati non attendibili vengono considerati non firmati e installati senza eventuali avvisi o errori come qualsiasi altro pacchetto non firmato.

Configurare i requisiti di firma del pacchetto

Nota

Richiede NuGet 4.9.0+ e Visual Studio 15.9 o versioni successive su Windows

Per configurare come i client NuGet verificano le firme dei pacchetti, impostare signatureValidationMode su require nel file nuget.config utilizzando il comando nuget config.

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

Questa modalità verifica che tutti i pacchetti siano firmati da uno dei certificati attendibili nel file nuget.config. Questo file consente di specificare gli autori e/o i repository attendibili in base all'impronta digitale del certificato.

Considerare attendibile l'autore del pacchetto

Per considerare attendibili i pacchetti in base alla firma dell'autore, usare il comando trusted-signers per impostare la proprietà author in 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>

Suggerimento

Usare il nuget.exe comando verify per ottenere il SHA256 valore dell'impronta digitale del certificato.

Considerare attendibili tutti i pacchetti di un archivio

Per considerare attendibili i pacchetti in base alla firma del repository, usare l'elemento repository:

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

Considerare attendibili i proprietari del pacchetto

Le firme di repository includono metadati aggiuntivi che consentono di determinare i proprietari del pacchetto al momento dell'invio. È possibile limitare i pacchetti provenienti da un repository in funzione di un elenco di proprietari:

<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 un pacchetto ha più proprietari e uno di questi è presente nell'elenco degli elementi attendibili, l'installazione del pacchetto avrà esito positivo.

Certificati radice non attendibili

In alcune situazioni può essere opportuno abilitare la verifica usando certificati non concatenati a una radice attendibile del computer locale. Per personalizzare questo comportamento è possibile usare l'attributo allowUntrustedRoot.

Sincronizzazione dei certificati del repository

I repository dei pacchetti devono annunciare i certificati usati nel loro indice dei servizi. Prima o poi, il repository aggiornerà questi certificati, ad esempio, allo scadere del certificato. Quando ciò avviene, i client con criteri specifici richiederanno un aggiornamento della configurazione per includere il certificato appena aggiunto. È possibile aggiornare facilmente i firmatari attendibili associati a un repository usando il nuget.exe comando di sincronizzazione dei firmatari attendibili.

Riferimento schema

Il riferimento allo schema completo per i criteri client è reperibile in nuget.config reference (Informazioni di riferimento su nuget.config)