Partilhar via


Assinar um pacote de aplicativo usando o SignTool

SignTool é uma ferramenta de linha de comando usada para assinar digitalmente um pacote de aplicativo ou pacote 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 o assinou. O SignTool pode assinar pacotes de aplicações 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 seu pacote de aplicativo. Para obter mais informações, consulte Empacotar um aplicativo UWP com o Visual Studio e Empacotar um aplicativo da área de trabalho a partir 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 aplicativo, 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á no seu PC com Windows 10:

    • x86: C:\Programas (x86)\Windows Kits\10\bin\<versão do SDK>\x86\SignTool.exe
    • x64: C:\Programas (x86)\Windows Kits\10\bin\<SDK versão>\x64\SignTool.exe

Usando o SignTool

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

Determinar o algoritmo de hash

Ao usar o SignTool para assinar o seu pacote ou bundle de aplicativo, o algoritmo de hash usado no SignTool deve ser o mesmo algoritmo que usou para empacotar o seu aplicativo. Por exemplo, se você usou MakeAppx.exe para criar seu pacote de aplicativo com as configurações padrão, deverá especificar SHA256 ao usar o 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 descompactar/extrair um pacote de aplicativo, consulte Extrair arquivos de um pacote ou pacote. 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 do Método Hash 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 no MakeAppx.exe), você sempre deve especificar um algoritmo de hash ao usar o SignTool.

Assinar o pacote da aplicação

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 de pacote SignTool é:

SignTool sign [options] <filename(s)>

O certificado usado para assinar seu aplicativo deve ser um arquivo .pfx ou estar 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 Usando o SignTool para assinar um arquivo

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

Depois que o pacote do aplicativo for assinado com um certificado válido, você estará pronto para carregar o pacote para a Loja. Para obter mais orientações sobre como carregar e enviar aplicativos para a Loja, consulte Envios de aplicativos.