Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
Opção A: WinApp CLI (recomendado para novos projetos)
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
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.