Signieren von VSIX-Paketen
Erweiterungsassemblys müssen nicht signiert werden, 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 Manipulationen verhindert. Während der Installation zeigt das VSIX-Installationsprogramm die Signatur und einen Link zum Zertifikat an. Wenn der Inhalt des VSIX geändert wird, ohne die Signatur zu aktualisieren, warnt das Installationsprogramm nur den Benutzer einer ungültigen Paketsignatur. In diesem Leitfaden wird vorausgesetzt, dass Sie bereits VSIX erstellt haben.
Codesignaturzertifikat erhalten
Gültige Zertifikate können von einer öffentlichen Zertifizierungsstelle abgerufen werden, z. B.:
Die vollständige Liste der von Windows vertrauenswürdigen Zertifizierungsstellen kann auch von http://aka.ms/trustcertpartnersabgerufen werden.
Sie können selbst ausgestellte Zertifikate zu Testzwecken verwenden. VSIX-Pakete, die mit selbst ausgestellten Zertifikaten signiert sind, werden jedoch von Visual Studio Marketplace nicht akzeptiert. Hier 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 als Dotnet-Tool unter Sign (nuget.org) veröffentlicht und unterstützt die lokale Signatur oder die Verwendung der Azure Key Vault-Cloudsignierung.
Bei der lokalen Signatur unterstützt Sign CLI Zertifikate und private Schlüssel, die in einer beliebigen Kombination dieser Speicherorte gespeichert sind:
PFX
-,P7B
- oderCER
-Dateien- Importiert in den Windows-Zertifikat-Manager
- Gespeichert auf einem USB-Gerät mit Zugriff über einen Kryptografiedienstanbieter (CSP)
Installation der Sign CLI
Öffnen Sie eine PowerShell--Instanz für Entwickler.
Überprüfen Sie, nuget.org als NuGet-Quelle hinzugefügt und aktiviert wird.
- Überprüfen Ihrer Quellen mithilfe von
dotnet nuget list source
- Hinzufügen von NuGet.org als Quelle mithilfe von
dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
- Überprüfen Ihrer Quellen mithilfe von
Installieren Sie Sign, indem Sie
dotnet tool install sign --version <version> --global
ausführen, wobei<version>
die neueste verfügbare Version unter Sign (nuget.org)ist.--global
ist optional und installiert das Tool am Standardspeicherort der .NET-Tools, der automatisch der PATH-Umgebungsvariable hinzugefügt wird.
Offlineinstallation von Sign CLI
Für isolierte Umgebungen können Sie das neueste "Sign" CLI NuGet-Paket herunterladen und es mit dem folgenden Befehl installieren:
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
Verwendung der Sign CLI
Nach der Installation kann mithilfe von sign code <command> <options>
auf die Sign CLI in einer PowerShell-Entwicklerinstanz zugegriffen werden. Eine detaillierte Übersicht der Optionen finden Sie in der Sign CLI-Referenz für VSIX-Pakete. Sie können Hilfe über die Befehlszeile erhalten, indem Sie sign code -h
eingeben.
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 mit Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize
abzurufen.
- Signieren mit einer PFX-Datei mit einem SHA-256-Fingerabdruck:
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"
Anmerkung
PFX-Dateien enthalten sowohl Das Zertifikat als auch den privaten Schlüssel, der für die Signatur verwendet wird, und entsprechen nicht den Anforderungen des C/A-Browserforums für die erweiterte Validierung (Extended Validation, EV) und die Nicht-EV-Signatur. Es wird empfohlen, nur private Schlüssel zu verwenden, die auf einem festgesicherten Secure Module (HSM)-Gerät gespeichert sind und mit einem Kryptografiedienstanbieter (Cryptographic Service Provider, CSP) darauf zugreifen.
- Signieren mithilfe des Microsoft-Zertifikat-Managers 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 mit einem privaten Schlüssel auf einem USB-Laufwerk ( option-csp):
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 mit einem USB-Laufwerk 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"