Partage via


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, P7Bou CER
  • 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

  1. Ouvrez une instance Developer PowerShell.

  2. 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
  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 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-384et 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"