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:
- archivos
PFX
,P7B
, oCER
- Importado en el Administrador de certificados de Windows
- Almacenado en un dispositivo USB con acceso a través de un proveedor de servicios criptográficos (CSP)
Instalación de Sign CLI
Abra una instancia de PowerShell para desarrolladores de.
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
- Verifica tus fuentes usando
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-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" -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"