Compartir a través de


Firma de paquetes VSIX

No es necesario firmar los ensamblados de extensión para poder ejecutarlos en Visual Studio, pero es recomendable hacerlo.

La adición de una firma digital a un paquete VSIX protege la extensión y evita alteraciones. Durante la instalación, el instalador de VSIX muestra la firma y un vínculo al certificado. Si el contenido de VSIX se modifica sin actualizar la firma, el instalador solo advierte al usuario de una firma de paquete no válida. En esta guía se da por hecho que ya ha creado un paquete VSIX.

Obtención de un certificado de firma de código

Los certificados válidos se pueden obtener de una entidad de certificación pública, como:

La lista completa de autoridades de certificación en las que confía Windows también puede obtenerse en http://aka.ms/trustcertpartners.

Si quiere realizar una prueba, también puede usar un certificado de emisión propia. Sin embargo, los paquetes VSIX firmados con certificados autofirmados no se admiten en Visual Studio Marketplace. Obtenga más información sobre cómo generar certificados autofirmados con la CLI de .NET.

Firma de un VSIX con la CLI de firma

VSIXSignTool ha quedado en desuso en favor de la CLI de forma (github.com). Esta herramienta se publica en NuGet como una herramienta dotnet en Firma (nuget.org) y admite la firma local o la firma en la nube de Azure Key Vault.

Para la firma local, la CLI de firma admite certificados y claves privadas almacenadas en cualquier combinación de estas ubicaciones:

Instalación de la CLI de firma

  1. Abra una instancia de PowerShell para desarrolladores.

  2. Compruebe que nuget.org está agregado y habilitado como origen de NuGet.

    • Compruebe los orígenes con dotnet nuget list source
    • Agregue NuGet.org como origen con dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
  3. Instale Firma ejecutando dotnet tool install sign --version <version> --global, donde <version> es la versión más reciente disponible en Firma (nuget.org).

    • --global es opcional e instala la herramienta en la ubicación predeterminada de .NET Tools que se agrega automáticamente a la variable de entorno PATH.

Instalación sin conexión de la CLI de firma

Para entornos aislados, puede descargar el paquete NuGet más reciente de la CLI de firma e instalarlo mediante:

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

Por ejemplo:

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

Uso de la CLI de firma

Una vez instalada, se puede acceder a la CLI de firma en una instancia de PowerShell para desarrolladores mediante sign code <command> <options>. Para obtener un desglose de las opciones, consulte Referencia de la CLI de firma para paquetes VSIX.

Importante

La CLI de firma solo admite SHA-256, SHA-384 y SHA-512 como algoritmos de huella digital válidos. Puede usar PowerShell para obtener huellas digitales mediante: Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize

  • Firma mediante un archivo PFX con una huella digital SHA-256:
sign code certificate-store -cfp 80BB567B...52CB95D4C -cf "D:\Certs\f5ec6169345347a7cd2f83af662970d5d0bfc914.pfx" -d "My VSIX Signature" -u "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"

Nota:

Los archivos PFX contienen un certificado y una clave privada que se usan para firmar y no cumplen con los requisitos del foro de explorador de C/A para la validación extendida (EV) y la firma sin EV. Se recomienda usar solo claves privadas almacenadas en un dispositivo de módulo seguro protegido (HSM) y acceder a ellas mediante un proveedor de servicios criptográficos (CSP).

  • Firma mediante el Administrador de certificados de Microsoft y una huella digital SHA512 (opción -csp):
code certificate-store -cfp A87A60A6F...894559B98 -csp "Microsoft Software Key Storage Provider" -d "My VSIX Signature" -u "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"
  • Firma mediante una clave privada en una unidad USB (opción -csp):
code certificate-store -cfp B113E82D...F5CF294BE0B -csp "eToken Base Cryptographic Provider" -d "VSIX Signature" -u "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"
  • Firma mediante una unidad USB mediante un contenedor de claves específico (opciones -csp y -k):
code certificate-store -s 15BB56B0...1ACB959D0 -csp "eToken Base Cryptographic Provider" -k "NuGet Signing.629c9149345347cd2f83af6f5ec70d5d0a7bf616" -d "VSIX Signature" -u "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"