Verwalten von Paketvertrauensgrenzen

Für die Installation von signierten Paketen sind keine besonderen Aktionen erforderlich. Wenn jedoch nach der Signierung der Inhalt geändert wurde, wird die Installation mit Fehler NU3008 blockiert.

Warnung

Pakete, die mit nicht vertrauenswürdigen Zertifikaten signiert wurden, werden als „nicht signiert“ angesehen und lösen wie alle anderen nicht signierten Pakete bei der Installation weder Warnungen noch Fehler aus.

Konfigurieren der Anforderungen an Paketsignaturen

Hinweis

Erfordert NuGet 4.9.0+ und Visual Studio Version 15.9 oder höher unter Windows.

Sie können konfigurieren, wie NuGet-Clients Paketsignaturen überprüfen, indem Sie mithilfe des nuget config-Befehls den signatureValidationMode in der nuget.config-Datei auf require festlegen.

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

Dieser Modus überprüft, ob alle Pakete mit einem der in der Datei „nuget.config“ als vertrauenswürdig angegebenen Zertifikate signiert wurden. In dieser Datei können Sie angeben, welche Ersteller und/oder Repositorys basierend auf dem Fingerabdruck des Zertifikats als vertrauenswürdig eingestuft sind.

Einstufen des Paketerstellers als vertrauenswürdig

Um Pakete basierend auf der Signatur des Erstellers als vertrauenswürdig einzustufen, legen Sie die author-Eigenschaft mithilfe des trusted-signers-Befehls in der nuget.config-Datei fest.

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

Tipp

Verwenden Sie den nuget.exe-Befehl verify, um den SHA256-Wert des Zertifikatfingerabdrucks abzurufen.

Einstufen aller Pakete aus einem Repository als vertrauenswürdig

Um alle Pakete basierend auf der Repositorysignatur als vertrauenswürdig einzustufen, verwenden Sie das repository-Element:

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

Einstufen der Paketbesitzer als vertrauenswürdig

Repositorysignaturen umfassen zusätzliche Metadaten, um die Besitzer des Pakets zum Zeitpunkt der Übermittlung zu bestimmen. Sie können Pakete aus einem Repository basierend auf einer Besitzerliste beschränken:

<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>

Wenn ein Paket über mehrere Besitzer verfügt und sich mindestens einer dieser Besitzer in der Liste der vertrauenswürdigen Besitzer befindet, wird die Paketinstallation erfolgreich durchgeführt.

Nicht vertrauenswürdige Stammzertifikate

Es gibt Situationen, in denen Sie eine Überprüfung mithilfe von Zertifikaten aktivieren möchten, die nicht mit einem vertrauenswürdigen Stamm auf dem lokalen Computer verkettet sind. Um dieses Verhalten anzupassen, können Sie das allowUntrustedRoot-Attribut verwenden.

Synchronisieren von Repositoryzertifikaten

Paketrepositorys sollten die Zertifikate, die sie verwenden, in ihrem Dienstindex bekanntgeben. Das Repository aktualisiert diese Zertifikate im Lauf der Zeit, z.B. dann, wenn ein Zertifikat abläuft. Wenn dies geschieht, muss die Konfiguration von Clients mit bestimmten Richtlinien aktualisiert werden, damit die neu hinzugefügten Zertifikate einbezogen werden. Sie können die vertrauenswürdigen Signaturgeber, die mit einem Repository verknüpft sind, ganz einfach über den nuget.exe-Befehl trusted-signers sync aktualisieren.

Schemareferenz

Sie finden die vollständige Schemareferenz für die Clientrichtlinien in der nuget.config-Referenz.