Signature de packages VSIX
Les assemblys d’extension n’ont pas besoin d’être signés avant de pouvoir s’exécuter dans Visual Studio, mais il est recommandé de le faire.
L’ajout d’une signature numérique à un package VSIX sécurise votre extension et empêche la falsification. Pendant l’installation, le programme d’installation de VSIX affiche la signature et un lien vers le certificat. Si le contenu du VSIX est modifié sans mettre à jour la signature, le programme d’installation avertit uniquement l’utilisateur d’une signature de package non valide. Ce guide présume que vous avez déjà créé un VSIX .
Obtenir un certificat de signature de code
Les certificats valides peuvent être obtenus auprès d’une autorité de certification publique, par exemple :
La liste complète des autorités de certification approuvées par Windows peut également être obtenue à partir de http://aka.ms/trustcertpartners.
Vous pouvez utiliser des certificats auto-émis à des fins de test. Toutefois, les packages VSIX signés à l’aide de certificats auto-émis ne sont pas acceptés par Visual Studio Marketplace. En savoir plus sur la génération de certificats auto-signés avec l’interface CLI .NET.
Signature d’un VSIX avec Sign CLI
VSIXSignTool est déconseillé au profit de Sign CLI (github.com). Cet outil est publié sur NuGet en tant qu’outil dotnet sous Sign (nuget.org) et prend en charge la signature locale ou l’utilisation de la signature cloud Azure Key Vault.
Pour la signature locale, Sign CLI prend en charge les certificats et les clés privées stockées dans n’importe quelle combinaison de ces emplacements :
- fichiers
PFX
,P7B
ouCER
- Importé dans le Gestionnaire de certificats Windows
- Stocké dans un appareil USB avec accès via un fournisseur de services de chiffrement (CSP)
Installation du Sign CLI
Ouvrez une instance Developer PowerShell.
Vérifiez que nuget.org est ajouté et activé en tant que source NuGet.
- Vérifiez vos sources à l’aide de
dotnet nuget list source
- Ajouter NuGet.org en tant que source à l’aide de
dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
- Vérifiez vos sources à l’aide de
Installez Sign en exécutant
dotnet tool install sign --version <version> --global
, où<version>
est la dernière version disponible sous Sign (nuget.org).--global
est facultatif et installe l’outil dans l’emplacement par défaut des outils .NET qui est automatiquement ajouté à la variable d’environnement PATH.
Installation hors connexion de Sign CLI
Pour les environnements isolés, vous pouvez télécharger le dernier package NuGet Sign CLI et l’installer à l’aide de :
dotnet tool install --global --add-source <path-to-folder> <tool-name> --version <version>
Par exemple:
dotnet tool install --global --add-source D:\NuGetTools sign --version 99.0
Utilisation de Sign CLI
Une fois installé, Sign CLI est accessible dans une instance PowerShell développeur à l’aide de sign code <command> <options>
. Pour obtenir une répartition des options, consultez Référence Sign CLI pour les packages VSIX. Vous pouvez obtenir de l’aide à partir de la ligne de commande en tapant sign code -h
.
Important
Sign CLI prend uniquement en charge SHA-256
, SHA-384
et SHA-512
en tant qu’algorithmes d’empreinte digitale valides. Vous pouvez utiliser PowerShell pour obtenir des empreintes digitales à l’aide de : Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize
- Signature à l’aide d’un fichier PFX avec une empreinte digitale SHA-256 :
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"
Remarque
Les fichiers PFX contiennent à la fois un certificat et une clé privée utilisés pour la signature et ne respectent pas les exigences du Forum du navigateur C/A pour la validation étendue (EV) et la signature non EV. Il est recommandé d’utiliser uniquement des clés privées stockées dans un appareil HSM (Secure Module) renforcé et de les accéder à l’aide d’un fournisseur de services de chiffrement (CSP).
- Signature à l’aide du Gestionnaire de certificats Microsoft et d’une empreinte digitale SHA512 (option-csp) :
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"
- Signature à l’aide d’une clé privée dans un lecteur USB (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"
- Signature à l'aide d'un lecteur USB et d'un conteneur de clés spécifique (options-csp et -k) :
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"