Como solucionar problemas de erros de assinatura de pacote de aplicativo

Uma falha na implantação do aplicativo pode ser causada por uma falha na validação da assinatura digital do pacote do aplicativo. Saiba como reconhecer essas falhas e o que fazer em relação a elas.

Quando você implanta um aplicativo do Windows empacotado, o Windows sempre tenta validar a assinatura digital no pacote do aplicativo. Falhas durante a implantação do bloco de validação de assinatura do pacote. Mas por que o pacote não validou pode não ser óbvio. Em particular, se você assinar seus pacotes com certificados privados para teste local, geralmente também deverá gerenciar a confiança desses certificados. Uma configuração incorreta de confiança de certificado pode levar a falhas de validação de assinatura.

O que você precisa saber

Tecnologias

Pré-requisitos

Instruções

Etapa 1: Examinar logs de eventos para obter informações de diagnóstico

Dependendo de como você tentou implantar seu aplicativo, talvez não tenha recebido um código de erro significativo para a falha de implantação. Nesse caso, você geralmente pode obter o código de erro diretamente dos logs de eventos.

Para obter o código de erro dos logs de eventos

  1. Execute eventvwr.msc.

  2. Vá para Visualizar Eventos (Local)>Logs de Aplicativos>e Serviços do Microsoft>Windows.

  3. O primeiro log a ser verificado é AppxPackagingOM>Microsoft-Windows-AppxPackaging/Operational.

  4. Os erros relacionados à implantação são registrados no AppXDeployment-Server>Microsoft-Windows-AppXDeploymentServer/Operational.

    Para erros de implantação, procure o evento de erro mais recente 404. Esse evento de erro fornece o código de erro e uma descrição do motivo da falha na implantação. Se um evento de erro 465 precedeu o evento 404, houve um problema ao abrir o pacote.

Se o erro 465 não ocorrer, consulte Solução de problemas gerais de empacotamento, implantação e consulta de aplicativos do Windows. Caso contrário, consulte esta tabela para códigos de erro comuns que podem aparecer na sequência de caracteres de erro para o evento de erro 465:

Código de erro Erro Descrição Sugestão
0x80073CF0 ERROR_INSTALL_OPEN_PACKAGE_FAILED Não foi possível abrir o pacote do aplicativo. Esse erro geralmente indica um problema com o pacote. Você precisa compilar e assinar o pacote novamente. Para obter mais informações, consulte Usando o App Packager.
0x80080205 APPX_E_INVALID_BLOCKMAP O pacote do aplicativo foi adulterado ou tem um mapa de blocos inválido. O pacote está corrompido. Você precisa compilar e assinar o pacote novamente. Para obter mais informações, consulte Usando o App Packager.
0x800B0004 TRUST_E_SUBJECT_NOT_TRUSTED O pacote do aplicativo foi adulterado. O conteúdo do pacote não corresponde mais à sua assinatura digital. Você precisa assinar o pacote novamente. Para obter mais informações, consulte Como assinar um pacote de aplicativo usando o SignTool.
0x800B0100 TRUST_E_NOSIGNATURE O pacote do aplicativo não está assinado. Somente pacotes de aplicativos do Windows assinados podem ser implantados. Para obter informações sobre como assinar um pacote de aplicativo, consulte Como assinar um pacote de aplicativo usando o SignTool.
0x800B0109 CERT_E_UNTRUSTED_ROOT A cadeia de certificados usada para assinar o pacote do aplicativo termina em um certificado raiz que não é confiável. Continue para a Etapa 2 para solucionar problemas de confiança do certificado.
0x800B010A CERT_E_CHAINING Nenhuma cadeia de certificados pôde ser criada para uma autoridade raiz confiável a partir do certificado que foi usado para assinar o pacote do aplicativo. Continue para a Etapa 2 para solucionar problemas de confiança do certificado.

 

Etapa 2: Determinar a cadeia de certificados usada para assinar o pacote do aplicativo

Para descobrir os certificados nos quais o computador local deve confiar, você pode examinar a cadeia de certificados para a assinatura digital no pacote do aplicativo.

Para determinar a cadeia de certificados

  1. No Explorador de Arquivos, clique com o botão direito do mouse no pacote do aplicativo e selecione Propriedades.
  2. Na caixa de diálogo Propriedades, selecione a guia Assinaturas Digitais, que também exibe se a assinatura pode ser validada.
  3. Na lista Assinatura, selecione a assinatura e clique no botão Detalhes .
  4. Na caixa de diálogo Detalhes da Assinatura Digital, clique no botão Exibir Certificado.
  5. Na caixa de diálogo Certificado, selecione a guia Caminho de Certificação.

O certificado superior na cadeia é o certificado raiz e o certificado inferior é o certificado de assinatura. Se apenas um único certificado estiver na cadeia, o certificado de assinatura também será seu próprio certificado raiz. Você pode determinar o número de série para cada certificado que você usa com o Certutil:

Para determinar o número de série de cada certificado

  1. No painel Caminho de certificação, selecione o certificado e clique em Exibir Certificado.
  2. Na caixa de diálogo Certificado, selecione a guia Detalhes , que exibe o número de série e outras propriedades úteis do certificado.

Etapa 3: Determinar os certificados confiáveis pela máquina local

Para poder implantar um pacote de aplicativo, ele não deve ser apenas confiável no contexto do usuário, mas também no contexto do computador local. Como resultado, a assinatura digital pode parecer válida quando exibida na guia Assinaturas Digitais da etapa anterior, mas ainda falhar na validação durante a implantação do pacote do aplicativo.

Para determinar se a cadeia de certificados usada para assinar o pacote do aplicativo é especificamente confiável pelo computador local

  1. Execute este comando:

    CertUtil.exe -store Root rootCertSerialNumber
    
  2. Execute este comando:

    CertUtil.exe -store TrustedPeople signingCertSerialNumber
    

Se você não especificar o número de série do certificado, o Certutil listará todos os certificados confiáveis pelo computador local para esse armazenamento.

O pacote pode falhar ao instalar devido a erros de encadeamento de certificados, mesmo se o certificado de assinatura não for auto-assinado e o certificado raiz estiver no armazenamento raiz do computador local. Nesse caso, pode haver um problema com a confiança para as autoridades de certificação intermediárias. Para obter mais informações sobre esse problema, consulte Trabalhando com certificados.

Comentários

Se você determinou que o pacote não pôde ser implantado porque o certificado de assinatura não é confiável, não instale o pacote a menos que você saiba onde ele se originou e confie nele.

Se você quiser confiar manualmente no aplicativo para instalação (por exemplo, para instalar seu próprio pacote de aplicativo assinado por teste), poderá adicionar manualmente o certificado à confiança de certificado do computador local a partir do pacote do aplicativo.

Para adicionar manualmente o certificado à confiança de certificado do computador local

  1. No Explorador de Arquivos, clique com o botão direito do mouse no pacote do aplicativo e, no menu de contexto pop-up, selecione Propriedades.
  2. Na caixa de diálogo Propriedades, selecione a guia Assinaturas Digitais.
  3. Na lista Assinatura, selecione a assinatura e clique no botão Detalhes .
  4. Na caixa de diálogo Detalhes da Assinatura Digital, clique no botão Exibir Certificado.
  5. Na caixa de diálogo Certificado, clique no botão Instalar Certificado... .
  6. No Assistente para Importação de Certificados, selecione Computador Local e clique em Avançar. Você precisará conceder privilégios de administrador para continuar.
  7. Selecione Colocar todos os certificados no armazenamento a seguir e navegue até o repositório Pessoas Confiáveis.
  8. Clique em Avançar e, em seguida, clique em Concluir para concluir o assistente.

Após essa adição manual, você pode ver que o certificado agora é confiável na caixa de diálogo Certificado .

Você pode remover o certificado depois de não precisar mais dele.

Para remover o certificado

  1. Execute Cmd.exe como administrador.

  2. No prompt de comando do administrador, execute este comando:

    Certutil -store TrustedPeople
    
  3. Procure o número de série do certificado que você instalou. Esse número é o certID.

  4. Execute este comando:

    Certutil -delStore TrustedPeople certID
    

Recomendamos que você evite adicionar manualmente certificados raiz ao Armazenamento de Certificados de Autoridades de Certificação Raiz Confiáveis da máquina local. Ter vários aplicativos assinados com certificados que encadeiam o mesmo certificado raiz, como aplicativos de linha de negócios, pode ser mais eficiente do que instalar certificados individuais no repositório de Pessoas Confiáveis. O repositório Pessoas Confiáveis contém certificados que são considerados confiáveis por padrão e, portanto, não são verificados por autoridades superiores ou listas ou cadeias de certificados confiáveis. Para obter considerações sobre a adição de certificados ao armazenamento de certificados de Autoridades de Certificação Raiz Confiáveis, consulte Práticas recomendadas de assinatura de código.

Considerações sobre segurança

Ao adicionar um certificado aos armazenamentos de certificados do computador local, você afeta a confiança no certificado de todos os usuários no computador. Recomendamos que você instale todos os certificados de assinatura de código desejados para testar pacotes de aplicativos no repositório de certificados Pessoas Confiáveis. Remova imediatamente esses certificados quando eles não forem mais necessários, para evitar que sejam usados para comprometer a confiança do sistema. Se você criar seus próprios certificados de teste para assinar pacotes de aplicativos, também recomendamos restringir os privilégios associados ao certificado de teste. Para obter informações sobre como criar certificados de teste para assinar pacotes de aplicativos, consulte Como criar um certificado de assinatura de pacote de aplicativo.

Amostras

Criar exemplo de pacote de aplicativo

Conceitos

Solucionar problemas de empacotamento, implantação e consulta de aplicativos Windows

Tarefas de certutil para gerenciar certificados