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)