Assine o seu pacote MSIX: guia de ponta a ponta

Este guia guia-o na assinatura de um pacote MSIX para cada fase de desenvolvimento — desde os testes locais até à distribuição em produção. Para uma comparação entre opções de assinatura e custos, consulte a visão geral sobre a assinatura de um pacote MSIX.

Escolha uma abordagem de assinatura

Etapa Abordagem recomendada Versão Windows
Desenvolvimento local e testes WinApp CLI (certificado auto-assinado) Windows 10 e versões posteriores
Distribuir para testadores (instalação direta/sideloading) Certificado auto-assinado com etapa de confiança de certificação Windows 10 e versões posteriores
Distribuição de produção Azure Artifact Signing (anteriormente Trusted Signing) Windows 10 versão 1809 e posteriores, Windows Server 2016 e posteriores
Distribuição na Microsoft Store Assinado pela Loja com a submissão Todas as versões suportadas para Windows

Desenvolvimento: Sinal para testes locais

Para desenvolvimento local, utilize um certificado auto-assinado. Pacotes auto-assinados só podem ser instalados em máquinas onde o certificado é explicitamente confiável — isto é intencional e apropriado para testes.

Importante

O CLI de Desenvolvimento de Aplicações Windows está atualmente em pré-visualização pública e requer Windows 10 com WinGet instalado.

A linha de comando WinApp trata da geração e assinatura de certificados num único passo.

Passo 1: Instalar a CLI WinApp

winget install -e --id Microsoft.WinAppCLI --source winget

Passo 2: Gerar um certificado de desenvolvimento auto-assinado

winapp cert generate --manifest .\appxmanifest.xml --output .\devcert.pfx --install

O --manifest indicador lê diretamente o nome da editora do seu appxmanifest.xml. A bandeira --install adiciona o certificado ao armazém de confiança do computador local, para que possa instalar imediatamente o seu pacote.

Passo 3: Assinar o pacote

winapp sign MyApp.msix --cert .\devcert.pfx

Opção B: PowerShell + SignTool (Windows 10 e versões posteriores)

Use esta abordagem se não estiver a usar a linha de comando do WinApp.

Passo 1: Criar um certificado auto-assinado

Execute o seguinte num prompt PowerShell elevado. O valor Subject deve corresponder exatamente ao Publisher no seu appxmanifest.xml:

New-SelfSignedCertificate -Type Custom -KeyUsage DigitalSignature `
  -Subject "CN=MyPublisher" `
  -CertStoreLocation "Cert:\CurrentUser\My" `
  -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") `
  -FriendlyName "MyApp Dev Cert"

Note a impressão digital no resultado — vai precisar dela nos próximos passos.

Passo 2: Exportar o certificado para um ficheiro PFX

$password = ConvertTo-SecureString -String "YourPassword" -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Thumbprint>" `
  -FilePath .\devcert.pfx -Password $password

Passo 3: Confie localmente no certificado

Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" `
  -FilePath .\devcert.pfx -Password $password

Passo 4: Assine o pacote

SignTool sign /fd SHA256 /a /f .\devcert.pfx /p "YourPassword" MyApp.msix

Para a utilização completa do SignTool, consulte Assinar um pacote de aplicativo usando o SignTool.


Testes: Distribuir aos testadores com um certificado auto-assinado

Para instalar um pacote MSIX auto-assinado na máquina de um testador, é necessário estabelecer confiança nesse certificado primeiro na máquina.

Observação

No Windows 10 versão 2004 e posteriores e Windows 11, o sideloading está ativado por defeito. Nas versões Windows 10 anteriores, os testadores têm de ativar Sideload apps em Settings Update & Segurança Para programadores.

Entregue aos testadores o certificado: Partilhe o ficheiro .pfx ou .cer (apenas chave pública) em conjunto com o pacote .msix.

Os testadores executam o seguinte num prompt PowerShell elevado:

# If you shared a .pfx file (testers need the password)
Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" `
  -FilePath .\devcert.pfx -Password (ConvertTo-SecureString "YourPassword" -Force -AsPlainText)

# If you shared a .cer file (public key only, no password needed)
Import-Certificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" -FilePath .\devcert.cer

Depois de confiar no certificado, os testadores podem instalar o .msix ao clicar duas vezes nele.

Importante

Os certificados auto-assinados devem ser usados apenas para testes. Remova-os das máquinas de teste quando já não for necessário. Para uma distribuição ampla, utilize antes um método de assinatura de confiança pública.


Produção: Azure Artifact Signing (anteriormente Trusted Signing)

Aplica-se a: Windows 10 versão 1809 e posteriores, Windows 11 (todas as versões), Windows Server 2016 e posteriores

Azure Artifact Signing é o novo nome para o que anteriormente se chamava Trusted Signing. O serviço é idêntico — apenas o nome alterado. Ainda podes ver "Assinatura Confiável" em algumas ferramentas (como a ação azure/trusted-signing-action GitHub e o ID do pacote winget) à medida que essas referências são atualizadas ao longo do tempo.

A assinatura de artefactos do Azure é a opção recomendada para assinatura MSIX em produção. A reputação está ligada à sua identidade verificada e não a um certificado específico, o que significa que a identidade do seu editor constrói reputação SmartScreen ao longo do tempo à medida que os utilizadores instalam as suas aplicações assinadas. Consulte uma visão geral sobre assinar um pacote MSIX para requisitos de elegibilidade e informações sobre custos antes de criar uma conta.

Importante

Disponibilidade de assinatura de artefactos do Azure: Organizações nos EUA, Canadá, União Europeia e Reino Unido podem aderir. Atualmente, os desenvolvedores individuais estão limitados aos EUA e Canadá. Se for um programador individual fora dessas regiões, use antes um certificado de assinatura de código OV de uma CA (veja Produção: certificado de assinatura de código OV abaixo).

Observação

Assinar com Azure Artifact Signing não proporciona confiança instantânea no SmartScreen. Tal como os certificados OV, as suas aplicações vão inicialmente mostrar um aviso SmartScreen até que a identidade do seu editor construa reputação suficiente para downloads — normalmente várias semanas e centenas de instalações limpas. Este é um comportamento esperado para novos editores. Para detalhes sobre como funciona a reputação do SmartScreen e o que esperar como novo editor, consulte SmartScreen reputation for Windows app developers.

Pré-requisitos

  • Uma conta de assinatura de artefactos digitais com validação de identidade concluída e um perfil de certificado criado. Veja o guia rápido de assinatura de artefactos.
  • A função de Assinador de Perfil de Certificado de Assinatura de Confiança atribuída à identidade usada para assinar.

Passo 1: Instalar Ferramentas Cliente de Assinatura de Artefactos

As Ferramentas de Cliente de Assinatura de Artefactos incluem o plugin dlib necessário, uma versão compatível do SignTool e o runtime .NET 8. A sintaxe padrão do SignTool não funciona com Assinatura de Artefactos sem este pacote.

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

Se o WinGet não estiver disponível (por exemplo, num agente de compilação do Windows Server), instale via PowerShell como administrador:

$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri "https://download.microsoft.com/download/70ad2c3b-761f-4aa9-a9de-e7405aa2b4c1/ArtifactSigningClientTools.msi" -OutFile .\ArtifactSigningClientTools.msi
Start-Process msiexec.exe -Wait -ArgumentList '/I ArtifactSigningClientTools.msi /quiet'
Remove-Item .\ArtifactSigningClientTools.msi

Passo 2: Criar um ficheiro JSON de metadados

Crie um ficheiro chamado metadata.json com os dados da sua conta de assinatura de artefactos. O URI do endpoint deve corresponder à região Azure onde criou a sua conta (encontre-o no portal Azure na sua conta de assinatura de artefactos como URI da conta):

{
  "Endpoint": "https://<region>.codesigning.azure.net/",
  "CodeSigningAccountName": "<your-account-name>",
  "CertificateProfileName": "<your-certificate-profile-name>"
}

Para a lista completa de URIs de endpoint específicas por região, veja Integrações de assinatura.

Passo 3: Autenticar

Defina as suas credenciais da Azure como variáveis de ambiente (use credenciais de Registo de Aplicação para CI/CD):

$env:AZURE_CLIENT_ID     = "<your-client-id>"
$env:AZURE_TENANT_ID     = "<your-tenant-id>"
$env:AZURE_CLIENT_SECRET = "<your-client-secret>"

Em alternativa, execute az login para assinaturas locais interativas.

Passo 4: Assine o pacote

Use o SignTool instalado com as Ferramentas do Cliente de Assinatura de Artefactos. O /dlib flag aponta para o plugin dlib instalado no passo anterior:

signtool sign /v /fd SHA256 `
  /tr "https://timestamp.acs.microsoft.com" /td SHA256 `
  /dlib "C:\Program Files (x86)\Microsoft\ArtifactSigningClientTools\bin\Azure.CodeSigning.Dlib.dll" `
  /dmdf .\metadata.json `
  MyApp.msix

Sugestão

Use o /debug flag para obter resultados detalhados se a assinatura falhar — mostra a cadeia de certificados e os detalhes de autenticação.

CI/CD: GitHub Actions

Use o oficial azure/trusted-signing-action:

- name: Sign MSIX with Azure Artifact Signing
  uses: azure/trusted-signing-action@v0
  with:
    azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
    azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
    azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
    endpoint: ${{ secrets.AZURE_TRUSTED_SIGNING_ENDPOINT }}
    trusted-signing-account-name: ${{ secrets.AZURE_CODE_SIGNING_NAME }}
    certificate-profile-name: ${{ secrets.AZURE_CERT_PROFILE_NAME }}
    files-folder: ${{ github.workspace }}\output
    files-folder-filter: msix

Para Azure DevOps, veja configurar Azure DevOps com Assinatura Confiável.


Produção: Distribuição na Microsoft Store

Aplica-se a: Todas as versões suportadas Windows

Se estiver a distribuir através da Microsoft Store, não precisa de assinar o pacote — a Loja assina-o durante o processo de submissão. Construa o seu pacote e submeta através do Partner Center. A Loja fornece uma assinatura globalmente confiável e trata de toda a gestão de certificados.


Produção: certificado de assinatura do código OV

Aplica-se a: Windows 10 e posteriores

Se a Assinatura de Artefactos não estiver disponível para a sua região ou situação, pode adquirir um certificado de assinatura de código OV (Validação da Organização) de uma autoridade certificadora (CA) como DigiCert, Sectigo ou GlobalSign. Os custos variam tipicamente entre $300–500/ano.

Depois de tiveres um ficheiro PFX da tua CA:

SignTool sign /fd SHA256 /a /f .\cert.pfx /p "YourPassword" `
  /tr http://timestamp.digicert.com /td SHA256 `
  MyApp.msix

Para opções completas de assinatura, consulte Assinar um pacote de aplicação usando o SignTool.

Observação

Os certificados OV não proporcionam confiança instantânea no SmartScreen. A reputação é construída ao longo do tempo à medida que os teus pacotes assinados são instalados sem serem assinalados. Para mais detalhes, consulte reputação do SmartScreen para desenvolvedores de aplicações do Windows.