Compartir vía


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 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 entidades de certificación de confianza de Windows también se puede obtener de http://aka.ms/trustcertpartners.

Puede usar certificados auto-emitidos con fines de prueba. Sin embargo, Visual Studio Marketplace no acepta paquetes VSIX firmados mediante certificados auto emitidos. Obtenga más información sobre Generar certificados autofirmados con la CLI de .NET.

Firma de un VSIX con la CLI de firma

VSIXSignTool ha quedado en desuso a favor de Sign CLI (github.com). Esta herramienta se publica en NuGet como una herramienta dotnet en sign (nuget.org) y admite la firma local o mediante 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 Sign CLI

  1. Abra una instancia de PowerShell para desarrolladores de.

  2. Compruebe que nuget.org se ha añadido y habilitado como origen de NuGet.

    • Verifica tus fuentes usando dotnet nuget list source
    • Agregar NuGet.org como origen mediante dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
  3. Instale Sign ejecutando dotnet tool install sign --version <version> --global, donde <version> es la versión más reciente disponible en Sign (nuget.org).

    • --global es opcional e instala la herramienta en la ubicación predeterminada de las herramientas de .NET 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 Sign CLI 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 instalado, se puede acceder a Sign CLI 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. Para obtener ayuda desde la línea de comandos, escriba sign code -h.

Importante

La CLI de firma solo admite SHA-256, SHA-384y 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" -t "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 (-csp opción):
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 mediante una clave privada en una unidad USB ( opción-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 mediante una unidad USB mediante un contenedor de claves específico (-csp y opciones de -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"