Assine um pacote MSIX

A assinatura de pacotes de aplicações é um passo obrigatório no processo de criação de um pacote MSIX que pode ser implementado. O Windows exige que os pacotes MSIX sejam assinados com um certificado de assinatura de código válido.

Para instalar com sucesso uma aplicação Windows, o pacote não só tem de ser assinado, mas também confiável no dispositivo. Isso significa que o certificado deve ser encadeado a uma das raízes confiáveis no dispositivo. Por defeito, o Windows confia nos certificados da maioria das autoridades certificadoras que fornecem certificados de assinatura de código.

Além disso, se estiveres a criar um bundle MSIX, não é necessário assinar todos os pacotes do bundle individualmente. Apenas o pacote precisa de ser assinado; a assinatura cobre os pacotes dentro do pacote.

Opções de assinatura

Escolha uma abordagem de assinatura com base no seu cenário:

Cenário Option Custo
Desenvolvimento e testes locais Certificado autoassinado Gratuito
Distribuição no ambiente de produção (recomendada) Azure Assinatura de Artefatos (anteriormente Assinatura Confiável) Básico: ~$10/mês
Distribuição de produção (alternativa) Certificado de assinatura de código OV de uma Autoridade Certificadora (CA) $300–500/ano
Distribuição na Microsoft Store Assinado pela Loja no momento da submissão Gratuito

Observação

Azure Assinatura de Artefactos (anteriormente conhecida como Assinatura Confiável) é o serviço gerido de assinatura de código da Microsoft e é a opção recomendada para assinatura MSIX em produção. Principais características:

  • Reputação baseada em identidade: A reputação está ligada à identidade verificada do editor em vez de um certificado específico, acumulando-se assim ao longo das compilações. No entanto, como em toda a distribuição fora da Store, novas aplicações continuarão a exibir avisos do SmartScreen até que haja histórico suficiente de downloads acumulado — geralmente, isso leva várias semanas. Consulte a reputação do SmartScreen para desenvolvedores de Windows aplicações.
  • Certificados de curta duração: Um novo certificado é emitido diariamente, e cada certificado permanece válido por cerca de 3 dias, permitindo a revogação com precisão temporal, se necessário.
  • CI/CD ready: Suporta GitHub Actions (azure/trusted-signing-action) e Azure DevOps prontos a utilizar.

Elegibilidade para certificados de Public Trust: Disponível para organizações nos EUA, Canadá, União Europeia e Reino Unido, bem como para promotores individuais nos EUA e Canadá. As organizações devem ter um histórico fiscal verificável de três ou mais anos. Ver Informação importante para validação de identidade.

Assinatura com SignTool requer configuração extra: O SignTool funciona com Assinatura de Artefactos apenas quando utiliza as Ferramentas de Cliente de Assinatura de Artefactos, que incluem o plugin dlib obrigatório e o tempo de execução .NET 8. Deve também fornecer um metadata.json ficheiro com o endpoint da sua conta e o perfil do certificado. Uma invocação padrão do SignTool do SDK do Windows, por si só, não será suficiente para assinatura de artefactos. A instalação mais fácil é:

winget install -e --id Microsoft.Azure.ArtifactSigningClientTools

Consulte Configurar o SignTool com Assinatura de Artefatos para ter a configuração completa.

AzureSignTool é uma ferramenta comunitária separada para assinar com certificados armazenados em Azure Key Vault. Não suporta a Assinatura de Artefactos — os dois são serviços distintos. Para assinatura baseada em Azure Key Vault em Visual Studio, veja pacotes Sign com Azure Key Vault.

WinApp CLI

A linha de comando WinApp fornece comandos convenientes para assinatura de desenvolvimento:

  • winapp cert generate — criar um certificado autoassinado para desenvolvimento
  • winapp sign — assinar um pacote MSIX ou executável com um certificado
  • winapp tool signtool — acede diretamente ao SignTool a partir do SDK Windows

Temas de assinatura

Tópico Descrição
Pré-requisitos para assinatura Pré-requisitos para assinar um pacote de aplicação.
Usando o SignTool Como usar o SignTool do SDK do Windows para assinar um pacote de aplicações.
Assine pacotes com Azure Key Vault Como assinar pacotes usando um certificado armazenado no Azure Key Vault do Visual Studio.
Assinar um pacote MSIX com assinatura do Device Guard Como assinar a sua aplicação com a assinatura do Device Guard.
Criando pacotes não assinados para teste Como criar um pacote MSIX sem assinatura para testes.
Azure Assinatura de Artefatos O serviço de assinatura gerida da Microsoft (anteriormente Assinatura Confiável) para pacotes MSIX de produção.

Marcação de hora

É altamente recomendável que o carimbo de data/hora seja usado ao assinar seu aplicativo com um certificado. O carimbo de data/hora preserva a assinatura, permitindo que o pacote do aplicativo seja aceito pela plataforma de implantação do aplicativo mesmo após a expiração do certificado. No momento da inspeção do pacote, o carimbo de data/hora permite que a assinatura do pacote seja validada em relação ao momento em que foi assinada. Isso permite que os pacotes sejam aceitos mesmo depois que o certificado não for mais válido. Os pacotes que não têm carimbo temporal serão avaliados com base na hora atual e, se o certificado deixar de ser válido, o Windows não aceitará o pacote.

A seguir estão os diferentes cenários em torno da assinatura de aplicativo com/sem carimbo de data/hora:

Cenário A aplicação é assinada sem carimbo de data A aplicação é assinada com marca temporal.
O certificado é válido O aplicativo será instalado O aplicativo será instalado
O certificado é inválido (caducado) O aplicativo não será instalado A aplicação será instalada uma vez que a autenticidade do certificado for verificada no momento da assinatura pela autoridade de autenticação com carimbo de data/hora.

Observação

Se o aplicativo for instalado com êxito em um dispositivo, ele continuará a ser executado mesmo após a expiração do certificado, independentemente de estar com carimbo de data/hora ou não.

Garantia da Integridade do Pacote

Para além de garantir que apenas aplicações de confiança estão instaladas num dispositivo, um benefício adicional de assinar um pacote MSIX é que permite ao Windows impor a integridade do seu pacote e do seu conteúdo após a sua implementação num dispositivo. Ao fazer encadeamento com o AppxBlockMap.xml e o AppxSignature.p7x dentro de um pacote assinado, o Windows consegue realizar verificações de validação da integridade de um pacote e do seu conteúdo durante a execução e nas análises do Windows Defender. Se um pacote for considerado adulterado, o Windows bloqueará o lançamento da aplicação e iniciará um fluxo de trabalho de remediação para reparar ou reinstalar o pacote. Para pacotes não distribuídos através do Microsoft Store, a integridade do pacote é aplicada se o pacote declarar o elemento uap10:PackageIntegrity e for implementado em versões Windows 2004 e posteriores. Abaixo está um exemplo de declaração de aplicação da integridade do pacote no AppxManifest.xml:

<Package ...
xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"  
IgnorableNamespaces="uap10">
...
  <Properties>
    <uap10:PackageIntegrity>
      <uap10:Content Enforcement="on" />
    </uap10:PackageIntegrity>
  </Properties>
...
</Package>

Modo de dispositivo

O Windows 10 permite aos utilizadores selecionar o modo para executar o dispositivo na aplicação Definições. Os modos são aplicações da Microsoft Store, aplicações Sideload e modo Developer.

Microsoft Store apps é o mais seguro, pois só permite a instalação de apps a partir do Microsoft Store. As aplicações na Microsoft Store passam por um processo de certificação para garantir que são seguras para uso.

As aplicações de carregamento lateral e o modo de desenvolvedor são mais permissivos com as aplicações assinadas por outros certificados, desde que esses certificados sejam confiáveis e encadeados a uma das raízes confiáveis no dispositivo. Só selecione o modo Desenvolvedor se for programador e estiver a criar ou depurar aplicações do Windows 10. Mais informações sobre o modo de desenvolvedor e o que ele fornece podem ser encontradas aqui.

Observação

A partir do Windows 10 versão 2004, a opção Sideload está ativada por predefinição. Como resultado, o modo de desenvolvedor agora é uma opção alternável. As empresas ainda podem desativar o Sideload via política.