Partager via


Signature de packages VSIX

Il n'est pas nécessaire de signer les assemblages d'extension pour qu'ils puissent être exécutés dans Visual Studio, mais c'est une bonne pratique de le faire.

L'ajout d'une signature numérique à un package VSIX permet de sécuriser votre extension et d'empêcher toute falsification. Lors de 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 que la signature soit mise à jour, le programme d'installation avertit uniquement l'utilisateur que la signature du package n'est pas valide. Ce guide suppose que vous avez déjà créé un VSIX.

Obtenir un certificat de signature de code

Des certificats valides peuvent être obtenus auprès d’une autorité de certification publique, comme par exemple :

Vous pouvez également obtenir la liste complète des autorités de confiance approuvées par Windows sur 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 à l'aide de l'interface de programmation .NET.

Signer un VSIX avec Sign CLI

VSIXSignTool a été déprécié en faveur 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 dans le nuage Azure Key Vault.

Pour la signature locale, Sign CLI prend en charge les certificats et les clés privées stockés dans n'importe quelle combinaison de ces emplacements :

Installation de Sign CLI

  1. Ouvrez une instance PowerShell de développeur.

  2. Vérifiez que nuget.org est ajouté et activé en tant que source NuGet.

    • Vérifiez vos sources en utilisant dotnet nuget list source
    • Ajoutez NuGet.org comme source en utilisant dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
  3. 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 ligne de Sign CLI

Pour les environnements isolés, vous pouvez télécharger le dernier package NuGet de Sign CLI et l'installer en utilisant :

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 Developer PowerShell en utilisant sign code <command> <options>. Pour une analyse détaillée des options, voir Référence Sign CLI pour les packages VSIX.

Important

Sign CLI ne prend en charge que les algorithmes d'empreintes digitales SHA-256, SHA-384 et SHA-512. Vous pouvez utiliser PowerShell pour obtenir des empreintes digitales : Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize

  • Signature à l'aide d'un fichier PFX avec une empreinte 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 le certificat et la clé privée utilisés pour la certification et ne sont pas conformes aux exigences du forum des navigateurs C/A en matière de signature Extended Validation (EV) et non-EV. il est recommandé de n'utiliser que des clés privées stockées dans un appareil HSM (Hardened Secure Module) et d'y accéder par l'intermédiaire d'un CSP (Cryptographic Service Provider).

  • Signature à l'aide de Microsoft Certificate Manager et d'une empreinte 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 sur 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 utilisant 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"