Firmar un paquete de la aplicación con SignTool

SignTool es una herramienta de línea de comandos que se usa para firmar digitalmente un paquete de aplicación o un paquete con un certificado. El usuario puede crear el certificado (con fines de prueba) o emitirlo una empresa (para su distribución). La firma de un paquete de aplicación proporciona al usuario la comprobación de que los datos de la aplicación no se han modificado después de que se firmaron, al tiempo que se confirma la identidad del usuario o la empresa que los firmó. SignTool puede firmar paquetes y paquetes de aplicaciones cifrados o sin cifrar.

Importante

Si usó Visual Studio desarrollar la aplicación, se recomienda usar el asistente para Visual Studio para crear y firmar el paquete de aplicación. Para obtener más información, consulta Empaquetar una aplicación para UWP con Visual Studio y Empaquetar unaaplicación de escritorio desde el código fuente mediante Visual Studio .

Para obtener más información sobre la firma de código y los certificados en general, vea Introducción a la firma de código.

Prerrequisitos

  • Una aplicación empaquetada
    Para obtener más información sobre cómo crear manualmente un paquete de aplicación, consulte Creación de un paquete de aplicación con la MakeAppx.exe aplicación.

  • Un certificado de firma válido
    Para obtener más información sobre cómo crear o importar un certificado de firma válido, vea Crear o importar un certificado para la firma de paquetes.

  • SignTool.exe
    En función de la ruta de instalación del SDK, aquí es donde SignTool se encuentra en Windows 10 PC:

    • x86: C:\Archivos de programa (x86)\Windows Kits\10\bin\ < versión del sdk >\x86\SignTool.exe
    • x64: C:\Archivos de programa (x86)\Windows Kits\10\bin\ < versión del sdk >\x64\SignTool.exe

Uso de SignTool

SignTool se puede usar para firmar archivos, comprobar firmas o marcas de tiempo, quitar firmas, etc. Para firmar un paquete de aplicación, nos centraremos en el comando sign. Para obtener información completa sobre SignTool,consulte la página de referencia de SignTool.

Determinación del algoritmo hash

Al usar SignTool para firmar el paquete o la agrupación de aplicaciones, el algoritmo hash usado en SignTool debe ser el mismo algoritmo que usó para empaquetar la aplicación. Por ejemplo, si usó MakeAppx.exe para crear el paquete de aplicación con la configuración predeterminada, debe especificar SHA256 al usar SignTool, ya que es el algoritmo predeterminado que usaMakeAppx.exe.

Para averiguar qué algoritmo hash se usó al empaquetar la aplicación, extraiga el contenido del paquete de la aplicación e inspeccione el AppxBlockMap.xml aplicación. Para obtener información sobre cómo desempaquetar o extraer un paquete de aplicación, consulte Extracción de archivos de un paquete o agrupación. El método hash está en el elemento BlockMap y tiene este formato:

<BlockMap xmlns="http://schemas.microsoft.com/appx/2010/blockmap"
HashMethod="http://www.w3.org/2001/04/xmlenc#sha256">

En esta tabla se muestra cada valor HashMethod y su algoritmo hash correspondiente:

Valor hashMethod Algoritmo hash
http://www.w3.org/2001/04/xmlenc#sha256 SHA256
http://www.w3.org/2001/04/xmldsig-more#sha384 SHA384
http://www.w3.org/2001/04/xmlenc#sha512 SHA512

Nota

Puesto que el algoritmo predeterminado de SignTooles SHA1 (no disponible en MakeAppx.exe), siempre debe especificar un algoritmo hash al usar SignTool.

Firmar el paquete de aplicación

Una vez que tenga todos los requisitos previos y haya determinado qué algoritmo hash se usó para empaquetar la aplicación, estará listo para firmarla.

La sintaxis general de la línea de comandos para la firma de paquetes SignTool es:

SignTool sign [options] <filename(s)>

El certificado que se usa para firmar la aplicación debe ser un archivo .pfx o estar instalado en un almacén de certificados.

Para firmar el paquete de aplicación con un certificado de un archivo .pfx, use la sintaxis siguiente:

SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.appx
SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.msix

Tenga en cuenta /a que la opción permite a /a elegir automáticamente el mejor certificado.

Si el certificado no es un archivo .pfx, use la sintaxis siguiente:

SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.msix

Como alternativa, puede especificar el hash SHA1 del certificado deseado en lugar del < nombre del certificado mediante esta > sintaxis:

SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.msix

Para obtener más ejemplos, consulte Uso de SignTool para firmar un archivo

Tenga en cuenta que algunos certificados no usan una contraseña. Si el certificado no tiene una contraseña, omita "/p < Su > contraseña" en los comandos de ejemplo.

Una vez que el paquete de la aplicación esté firmado con un certificado válido, estará listo para cargar el paquete en store. Para obtener más instrucciones sobre cómo cargar y enviar aplicaciones a la Tienda, consulte Envíos de aplicaciones.