Compartilhar via


Assinar um pacote de aplicativo usando SignTool

SignTool é uma ferramenta de linha de comando usada para assinar digitalmente um pacote ou pacote de aplicativo com um certificado. O certificado pode ser criado pelo usuário (para fins de teste) ou emitido por uma empresa (para distribuição). A assinatura de um pacote de aplicativo fornece ao usuário a verificação de que os dados do aplicativo não foram modificados depois que ele foi assinado, ao mesmo tempo em que confirma a identidade do usuário ou da empresa que os assinou. O SignTool pode assinar pacotes e conjuntos de aplicativos criptografados ou não criptografados.

Importante

Se você usou o Visual Studio para desenvolver seu aplicativo, é recomendável usar o assistente do Visual Studio para criar e assinar o pacote do aplicativo. Para obter mais informações, consulte Empacotar um aplicativo UWP com o Visual Studio e empacotar um aplicativo da área de trabalho do código-fonte usando o Visual Studio.

Para obter mais informações sobre assinatura de código e certificados em geral, consulte Introdução à Assinatura de Código.

Pré-requisitos

  • Um aplicativo empacotado
    Para saber mais sobre como criar manualmente um pacote de aplicativos, consulte Criar um pacote de aplicativo com a ferramenta MakeAppx.exe.

  • Um certificado de assinatura válido
    Para obter mais informações sobre como criar ou importar um certificado de assinatura válido, consulte Criar ou importar um certificado para assinatura de pacote.

  • SignTool.exe
    Com base no caminho de instalação do SDK, é aqui que o SignTool está em seu computador Windows 10:

    • x86: C:\Arquivos de Programas (x86)\Windows Kits\10\bin\<sdk version>\x86\SignTool.exe
    • x64: C:\Arquivos de Programas (x86)\Windows Kits\10\bin\<sdk version>\x64\SignTool.exe

Usando o SignTool

SignTool pode ser usado para assinar arquivos, verificar assinaturas ou carimbos de data/hora, remover assinaturas e muito mais. Com o objetivo de assinar um pacote de aplicativo, nos concentraremos no comando sign. Para obter informações completas sobre SignTool, consulte a página de referência SignTool .

Determinar o algoritmo de hash

Ao usar o SignTool para assinar o pacote ou conjunto do aplicativo, o algoritmo de hash usado no SignTool deve ser o mesmo algoritmo usado para empacotar seu aplicativo. Por exemplo, se você usou MakeAppx.exe para criar o pacote do aplicativo com as configurações padrão, especifique SHA256 ao usar SignTool , pois esse é o algoritmo padrão usado por MakeAppx.exe.

Para descobrir qual algoritmo de hash foi usado durante o empacotamento do aplicativo, extraia o conteúdo do pacote do aplicativo e inspecione o arquivo AppxBlockMap.xml. Para saber como desempacotar/extrair um pacote de aplicativo, consulte Extrair arquivos de um pacote ou conjunto. O método hash está no elemento BlockMap e tem este formato:

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

Esta tabela mostra cada valor HashMethod e seu algoritmo de hash correspondente:

Valor HashMethod Algoritmo de 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

Observação

Como o algoritmo padrão do SignTool é SHA1 (não disponível em MakeAppx.exe), você sempre deve especificar um algoritmo de hash ao usar o SignTool.

Assinar o pacote do aplicativo

Depois de ter todos os pré-requisitos e determinar qual algoritmo de hash foi usado para empacotar seu aplicativo, você estará pronto para assiná-lo.

A sintaxe de linha de comando geral para assinatura do pacote SignTool é:

SignTool sign [options] <filename(s)>

O certificado usado para assinar seu aplicativo deve ser um arquivo .pfx ou ser instalado em um repositório de certificados.

Para assinar o pacote do aplicativo com um certificado de um arquivo .pfx, use a seguinte sintaxe:

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

Observe que a opção permite que o /aSignTool escolha o melhor certificado automaticamente.

Se o certificado não for um arquivo .pfx, use a seguinte sintaxe:

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, você pode especificar o hash SHA1 do certificado desejado em vez de Nome do <Certificado> usando esta sintaxe:

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

Para obter mais exemplos, consulte Como usar SignTool para assinar um arquivo

Observe que alguns certificados não usam uma senha. Se o certificado não tiver uma senha, omita "/p <Sua Senha>" dos comandos de exemplo.

Depois que o pacote do aplicativo for assinado com um certificado válido, você estará pronto para carregar seu pacote na Loja. Para obter mais diretrizes sobre como carregar e enviar aplicativos para a Loja, consulte envios de aplicativo.