Teilen über


Signieren von VSIX-Paketen

Es ist nicht erforderlich, Erweiterungsassemblys zu signieren, bevor sie in Visual Studio ausgeführt werden können, es empfiehlt sich jedoch, dies zu tun.

Durch das Hinzufügen einer digitalen Signatur zu einem VSIX-Paket wird Ihre Erweiterung gesichert und es wird eine Manipulation verhindert. Während der Installation zeigt das VSIX-Installationsprogramm die Signatur und einen Link zum Zertifikat an. Wenn der Inhalt des VSIX geändert, die Signatur jedoch nicht aktualisiert wird, warnt das Installationsprogramm den Benutzer nur im Falle einer ungültigen Paketsignatur. In diesem Leitfaden wird vorausgesetzt, dass Sie bereits ein VSIX erstellt haben.

Abrufen eines Codesignaturzertifikats

Gültige Zertifikate können von einer öffentlichen Zertifizierungsstelle abgerufen werden, z. B.:

Die vollständige Liste aller von Windows als vertrauenswürdig eingestuften Zertifizierungsstellen finden Sie auch unter http://aka.ms/trustcertpartners.

Sie können selbst ausgestellte Zertifikate für Testzwecke verwenden. VSIX-Pakete, die mit selbst ausgestellten Zertifikaten signiert wurden, werden allerdings von Visual Studio Marketplace nicht akzeptiert. Erfahren Sie mehr über das Generieren von selbstsignierten Zertifikaten mit der .NET CLI.

Signieren eines VSIX mit Sign CLI

VSIXSignTool wurde zugunsten von Sign CLI (github.com) eingestellt. Dieses Tool wird in NuGet unter Sign (nuget.org) als Dotnet-Tool veröffentlicht und unterstützt die lokale Signatur oder die Cloud-Signierung von Azure Key Vault.

Sign CLI unterstützt im Rahmen der lokalen Signatur Zertifikate und private Schlüssel, die in einer beliebigen Kombination der folgenden Speicherorte gespeichert sind:

Installieren von Sign CLI

  1. Öffnen Sie eine PowerShell-Entwicklerinstanz.

  2. Vergewissern Sie sich, dass nuget.org als NuGet-Quelle hinzugefügt und aktiviert wurde.

    • Überprüfen Sie Ihre Quellen mithilfe von dotnet nuget list source
    • Fügen Sie NuGet.org mithilfe von dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json als Quelle hinzu
  3. Installieren Sie Sign, indem Sie dotnet tool install sign --version <version> --global ausführen und <version> die neueste verfügbare Version unter „Sign (nuget.org)“ ist.

    • --global ist optional und installiert das Tool am Standardspeicherort der .NET-Tools, das automatisch zur PATH-Umgebungsvariablen hinzugefügt wird.

Offlineinstallation von Sign CLI

Für isolierte Umgebungen können Sie das neueste Sign CLI NuGet-Paket herunterladen. Installieren Sie es mithilfe von:

dotnet tool install --global --add-source <path-to-folder> <tool-name> --version <version>

Zum Beispiel:

dotnet tool install --global --add-source D:\NuGetTools sign --version 99.0

Verwenden von Sign CLI

Sobald Sie Sign CLI installiert haben, kann darauf in einer PowerShell-Entwicklerinstanz mithilfe von sign code <command> <options> zugegriffen werden. Eine Aufschlüsselung der Optionen finden Sie unter Referenz zu Sign CLI für VSIX-Pakete.

Wichtig

Sign CLI unterstützt nur SHA-256 SHA-384 und SHA-512 als gültige Fingerabdruckalgorithmen. Sie können PowerShell verwenden, um Fingerabdrücke mithilfe von Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize zu erhalten.

  • Signieren mit einer PFX-Datei mithilfe eines SHA-256-Fingerabdrucks:
sign code certificate-store -cfp 80BB567B...52CB95D4C -cf "D:\Certs\f5ec6169345347a7cd2f83af662970d5d0bfc914.pfx" -d "My VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"

Hinweis

PFX-Dateien enthalten sowohl das Zertifikat als auch den privaten Schlüssel, der für die Signatur verwendet wird. Sie entsprechen nicht den Anforderungen des CA-Browserforums für die erweiterte Validierung (Extended Validation, EV) und den Anforderungen der Nicht-EV-Signatur. Es wird empfohlen, nur private Schlüssel zu verwenden, die auf einem HSM-Gerät (Hardened Secure Module) gespeichert sind. Außerdem wird empfohlen, auf diese mithilfe eines Kryptografiedienstanbieters (Cryptographic Service Provider, CSP) zugreifen.

  • Signieren mithilfe des Zertifikat-Managers von Microsoft und eines SHA512-Fingerabdrucks (-csp-Option):
sign code certificate-store -cfp A87A60A6F...894559B98 -csp "Microsoft Software Key Storage Provider" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"
  • Signieren mithilfe eines privaten Schlüssels auf einem USB-Laufwerk (CSP-Option):
sign code certificate-store -cfp B113E82D...F5CF294BE0B -csp "eToken Base Cryptographic Provider" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"
  • Signieren mithilfe eines USB-Laufwerks mit einem bestimmten Schlüsselcontainer (-csp- und -k-Optionen):
sign code certificate-store -cfp 15BB56B0...1ACB959D0 -csp "eToken Base Cryptographic Provider" -k "NuGet Signing.629c9149345347cd2f83af6f5ec70d5d0a7bf616" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"