Condividi tramite


Firma di pacchetti VSIX

Gli assembly di estensione non devono essere firmati prima di poter essere eseguiti in Visual Studio, ma è consigliabile farlo.

L'aggiunta di una firma digitale a un pacchetto VSIX protegge l'estensione e impedisce la manomissione. Durante l'installazione, il programma di installazione VSIX visualizza la firma e un collegamento al certificato. Se il contenuto del VSIX viene modificato senza aggiornare la firma, il programma di installazione avvisa solo l'utente di una firma del pacchetto non valida. Questa guida presuppone che sia già stato creato un VSIX.

Ottenere un certificato di firma del codice

I certificati validi possono essere ottenuti da un'autorità di certificazione pubblica, ad esempio:

L'elenco completo delle autorità di certificazione attendibili da Windows può essere ottenuto anche da http://aka.ms/trustcertpartners.

A scopo di test è possibile usare l'autocertificazione. Tuttavia, i pacchetti VSIX firmati con certificati autocertificati non vengono accettati da Visual Studio Marketplace. Altre informazioni sulla generazione di certificati autofirmato con l'interfaccia della riga di comando di .NET.

Firma di un VSIX con l'interfaccia della riga di comando di firma

VSIXSignTool è stato deprecato a favore dell'interfaccia della riga di comando di firma (github.com).VSIXSignTool has been deprecated in favor of Sign CLI (github.com). Questo strumento viene pubblicato in NuGet come strumento dotnet in Sign (nuget.org) e supporta la firma locale o l'uso della firma cloud di Azure Key Vault.

Per la firma locale, l'interfaccia della riga di comando di Sign supporta i certificati e le chiavi private archiviate in qualsiasi combinazione di queste posizioni:

  • PFXFile , P7Bo CER
  • Importato in Gestione certificati Windows
  • Archiviato in un dispositivo USB con accesso tramite un provider di servizi di crittografia (CSP)

Installazione dell'interfaccia della riga di comando di firma

  1. Aprire un'istanza di PowerShell per sviluppatori.

  2. Verificare nuget.org sia stato aggiunto e abilitato come origine NuGet.

    • Controllare le origini usando dotnet nuget list source
    • Aggiungere NuGet.org come origine usando dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
  3. Installare Sign by eseguendo dotnet tool install sign --version <version> --global, dove <version> è la versione più recente disponibile in Sign (nuget.org).

    • --global è facoltativo e installa lo strumento nel percorso predefinito degli strumenti .NET aggiunto automaticamente alla variabile di ambiente PATH.

Installazione offline dell'interfaccia della riga di comando di Firma

Per gli ambienti isolati è possibile scaricare il pacchetto NuGet dell'interfaccia della riga di comando di Firma più recente e installarlo usando:

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

Ad esempio:

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

Uso dell'interfaccia della riga di comando di Sign

Dopo l'installazione, è possibile accedere all'interfaccia della riga di comando di Sign in un'istanza di Developer PowerShell usando sign code <command> <options>. Per una suddivisione delle opzioni, vedere Sign CLI Reference for VSIX Packages (Informazioni di riferimento sull'interfaccia della riga di comando per i pacchetti VSIX).

Importante

L'interfaccia della riga di comando di Sign supporta SHA-256solo , SHA-384e SHA-512 come algoritmi di impronta digitale validi. È possibile usare PowerShell per ottenere le impronte digitali usando: Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize

  • Firma con un file PFX con un'impronta 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"

Nota

I file PFX contengono sia il certificato che la chiave privata usati per la firma e non sono conformi ai requisiti del forum del browser C/A per la convalida estesa (EV) e la firma non EV. è consigliabile usare solo chiavi private archiviate in un dispositivo HSM (Hardened Secure Module) e accedervi usando un provider di servizi di crittografia (CSP).

  • Firma con Microsoft Certificate Manager e un'impronta digitale SHA512 (opzione-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"
  • Firma con una chiave privata in un'unità USB (opzione-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"
  • Firma con un'unità USB usando un contenitore di chiavi specifico (-csp e -k opzioni):
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"