Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este guia orienta você pela assinatura de um pacote MSIX para cada estágio de desenvolvimento, desde testes locais até distribuição de produção. Para comparar opções e custos de assinatura, consulte Visão geral da assinatura de um pacote MSIX.
Escolher uma abordagem de assinatura
| Etapa | Abordagem recomendada | Windows versão |
|---|---|---|
| Desenvolvimento e teste locais | CLI do WinApp (certificado autoassinado) | Windows 10 e posterior |
| Distribuir para testadores (instalação direta) | Certificado autoassinado com a etapa de estabelecimento de confiança do certificado | Windows 10 e posterior |
| Distribuição de produção | Assinatura de Artefatos do Azure (anteriormente Trusted Signing) | Windows 10 versão 1809 e posterior, Windows Server 2016 e posterior |
| distribuição da Microsoft Store | Assinado pela Loja durante o envio | Todas as versões de Windows com suporte |
Desenvolvimento: Assinatura de código para testes locais
Para desenvolvimento local, use um certificado autoassinado. Pacotes autoassinados só podem ser instalados em computadores em que o certificado é explicitamente confiável , isso é intencional e apropriado para teste.
Opção A: CLI do WinApp (recomendada para novos projetos)
Importante
A CLI de Desenvolvimento de Aplicativos do Windows está atualmente em prévia pública e requer Windows 10 com WinGet instalado.
CLI do WinApp lida com a geração e assinatura de certificados em uma única etapa.
Etapa 1: Instalar a CLI do WinApp
winget install -e --id Microsoft.WinAppCLI --source winget
Etapa 2: gerar um certificado de desenvolvimento autoassinado
winapp cert generate --manifest .\appxmanifest.xml --output .\devcert.pfx --install
O --manifest flag lê o nome do editor diretamente do seu appxmanifest.xml. O --install sinalizador adiciona o certificado ao repositório de confiança do computador local, para que você possa instalar imediatamente o pacote.
Etapa 3: Assinar o pacote
winapp sign MyApp.msix --cert .\devcert.pfx
Opção B: PowerShell + SignTool (Windows 10 e posterior)
Use essa abordagem se você não estiver usando a CLI do WinApp.
Etapa 1: Criar um certificado autoassinado
Execute o seguinte em um prompt do PowerShell com privilégios elevados. O valor Subject deve corresponder exatamente ao Publisher em 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"
Observe a impressão digital na saída – você precisará dela nas próximas etapas.
Etapa 2: Exportar o certificado para um arquivo PFX
$password = ConvertTo-SecureString -String "YourPassword" -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Thumbprint>" `
-FilePath .\devcert.pfx -Password $password
Etapa 3: Confiar no certificado localmente
Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" `
-FilePath .\devcert.pfx -Password $password
Etapa 4: Assinar o pacote
SignTool sign /fd SHA256 /a /f .\devcert.pfx /p "YourPassword" MyApp.msix
Para obter o uso completo do SignTool, consulte Assinar um pacote de aplicativo usando SignTool.
Testagem: distribuir aos testadores com um certificado autoassinado
Para instalar um pacote MSIX autoassinado no computador de um testador, o certificado deve ser confiável nesse computador primeiro.
Observação
No Windows 10 versão 2004 e posterior e Windows 11, o sideloading é habilitado por padrão. Em versões anteriores do Windows 10, os testadores devem habilitar aplicativos
Dê aos testadores o certificado: Compartilhe o .pfx arquivo ou .cer (somente chave pública) ao lado do .msix pacote.
Os testadores executam o seguinte em um prompt do PowerShell com privilégios elevados:
# 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 dando um duplo clique nele.
Importante
Certificados autoassinados só devem ser usados para teste. Remova-os dos computadores testador quando não for mais necessário. Para distribuição ampla, use um método de assinatura publicamente confiável.
Produção: Assinatura de Artifact Azure (antigo Trusted Signing)
Aplica-se a: Windows 10 versão 1809 e posterior, Windows 11 (todas as versões), Windows Server 2016 e posterior
Azure Artifact Signing é o novo nome para o que anteriormente era chamado de Assinatura Confiável. O serviço é idêntico , apenas o nome foi alterado. Você ainda poderá ver "Autenticação Confiável" em algumas ferramentas (como a Ação azure/trusted-signing-action GitHub e a ID do pacote winget), pois essas referências estão sendo atualizadas ao longo do tempo.
Azure Assinatura de Artefatos é a opção recomendada para a assinatura de MSIX em produção. A reputação está vinculada à sua identidade verificada em vez de a um certificado específico, o que significa que sua identidade do editor cria a reputação do SmartScreen ao longo do tempo à medida que os usuários instalam seus aplicativos assinados. Consulte a visão geral sobre como assinar um pacote MSIX para obter os requisitos de qualificação e as informações de custo antes de configurar uma conta.
Importante
Disponibilidade de Assinatura de Artefatos do Azure: Organizações nos EUA, Canadá, União Europeia e Reino Unido podem se inscrever para a assinatura. Atualmente, os desenvolvedores individuais estão limitados aos EUA e ao Canadá. Se você for um desenvolvedor individual fora dessas regiões, use um certificado de assinatura de código OV de uma AC (consulte Produção: certificado de assinatura de código OV abaixo).
Observação
A assinatura com o serviço Azure Artifact Signing não fornece confiança instantânea do SmartScreen. Assim como os certificados OV, seus aplicativos mostrarão inicialmente um aviso SmartScreen até que sua identidade de publicador crie reputação de download suficiente, normalmente em várias semanas e centenas de instalações limpas. Esse é o comportamento esperado para novos editores. Para obter detalhes sobre como funciona a reputação do SmartScreen e o que esperar como um novo publicador, consulte reputação do SmartScreen para desenvolvedores de aplicativos do Windows.
Pré-requisitos
- Uma conta de Assinatura de Artefato com validação de identidade concluída e um perfil de certificado criado. Confira o início rápido da Assinatura de Artefatos.
- A função Signatário de Perfil de Certificado de Assinatura Confiável atribuída à identidade usada para assinatura.
Etapa 1: Instalar Ferramentas do Cliente de Assinatura de Artefatos
As Ferramentas de Cliente de Assinatura de Artefato incluem o plug-in dlib necessário, uma versão compatível do SignTool e o runtime .NET 8. A sintaxe do Standard SignTool não pode ser utilizada para Assinatura de Artefatos sem este pacote.
winget install -e --id Microsoft.Azure.ArtifactSigningClientTools
Se o WinGet não estiver disponível (por exemplo, em um agente de build Windows Server), instale por meio do 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
Etapa 2: Criar um arquivo JSON de metadados
Crie um arquivo nomeado metadata.json com os detalhes da sua conta de Assinatura de Artefato. O URI do ponto de extremidade deve corresponder à região Azure em que você criou sua conta (localize-a no portal Azure em sua conta de Assinatura de Artefato como Conta URI):
{
"Endpoint": "https://<region>.codesigning.azure.net/",
"CodeSigningAccountName": "<your-account-name>",
"CertificateProfileName": "<your-certificate-profile-name>"
}
Para obter a lista completa de URIs de ponto de extremidade específicos da região, consulte As integrações de assinatura.
Etapa 3: Autenticar
Defina suas credenciais de Azure como variáveis de ambiente (use as credenciais de Registro de Aplicativo para CI/CD):
$env:AZURE_CLIENT_ID = "<your-client-id>"
$env:AZURE_TENANT_ID = "<your-tenant-id>"
$env:AZURE_CLIENT_SECRET = "<your-client-secret>"
Como alternativa, execute az login para assinatura local interativa.
Etapa 4: Assinar o pacote
Use o SignTool instalado com as Ferramentas do Cliente de Assinatura de Artefatos. O /dlib sinalizador aponta para o plug-in dlib instalado na etapa 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
Dica
Use o /debug sinalizador para obter uma saída detalhada se a assinatura falhar , mostrando detalhes de cadeia de certificados e 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, consulte Set up Azure DevOps with Trusted Signing.
Produção: distribuição na Microsoft Store
Aplica-se a: Todas as versões do Windows compatíveis
Se você estiver distribuindo por meio do Microsoft Store, não precisará assinar o pacote por conta própria – a Loja o assina durante o processo de envio. Crie seu pacote e envie-o por meio do Partner Center. A Loja fornece uma assinatura globalmente confiável e manipula todo o gerenciamento de certificados.
Produção: certificado de assinatura de código OV
Applies para: Windows 10 e posterior
Se a Assinatura de Artefato não estiver disponível para sua região ou situação, você poderá comprar um certificado de assinatura de código OV (Validação da Organização) de uma AC (autoridade de certificação), como DigiCert, Sectigo ou GlobalSign. Normalmente, os custos variam de US$ 300 a 500/ano.
Depois de ter um arquivo PFX de sua AC:
SignTool sign /fd SHA256 /a /f .\cert.pfx /p "YourPassword" `
/tr http://timestamp.digicert.com /td SHA256 `
MyApp.msix
Para obter opções de assinatura completas, consulte Assinar um pacote de aplicativo usando SignTool.
Observação
Os certificados OV não fornecem confiança instantânea do SmartScreen. A reputação é construída ao longo do tempo à medida que seus pacotes assinados são instalados sem serem marcados. Para obter detalhes, consulte Reputação do SmartScreen para desenvolvedores de aplicativos do Windows.