Firma de 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 la aplicación o un lote con un certificado. El usuario puede crear el certificado (con fines de prueba) o bien puede emitirlo una empresa (para su distribución). La firma de un paquete de la aplicación proporciona al usuario la comprobación de que los datos de la aplicación no se han modificado después de haberse firmado, al mismo tiempo que confirma la identidad del usuario o la empresa que lo ha firmado. SignTool puede firmar lotes y paquetes de la aplicación cifrados o sin cifrar.

Importante

Si ha usado Visual Studio para desarrollar la aplicación, se recomienda usar el asistente de Visual Studio para crear y firmar el paquete de la aplicación. Para obtener más información, vea Empaquetado de una aplicación para UWP con Visual Studio y Empaquetado de una aplicación de escritorio a partir de 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.

Requisitos previos

Uso de SignTool

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

Determinación del algoritmo hash

Al usar SignTool para firmar el lote o paquete de la aplicación, 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 la aplicación con la configuración predeterminada, al usar SignTool debe especificar SHA256, ya que es el algoritmo predeterminado que ha usado MakeAppx.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 archivo AppxBlockMap.xml. Para obtener información sobre cómo desempaquetar o extraer un paquete de la aplicación, vea Extracción de archivos de un paquete o lote. El método hash se encuentra 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:

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

Firma del paquete de la aplicación

Cuando tenga todos los requisitos previos y haya determinado qué algoritmo hash se usó para empaquetar la aplicación, estará a punto para firmarla.

La sintaxis general de la línea de comandos para la firma del paquete SignTool es la siguiente:

SignTool sign [options] <filename(s)>

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

Para firmar el paquete de la 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 que la opción /a permite a SignTool 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 de 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, vea Uso de SignTool para firmar un archivo.

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

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