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 artigo explica como criar e confiar em um certificado para assinatura de pacote de aplicativos usando ferramentas do PowerShell (para ferramentas CMD, consulte aqui). É recomendável que você use o Visual Studio para empacotar aplicativos UWP e empacotar aplicativos da área de trabalho, mas ainda poderá empacotar um aplicativo manualmente se não tiver usado o Visual Studio para desenvolver seu aplicativo.
Pré-requisitos
Um aplicativo empacotado ou não empacotado
Um aplicativo que contém um arquivo AppxManifest.xml. Você precisará referenciar o arquivo de manifesto ao criar o certificado que será usado para assinar o pacote final do aplicativo. Para obter detalhes sobre como empacotar manualmente um aplicativo, consulte Criar um pacote de aplicativo com a ferramenta MakeAppx.exe.Cmdlets de PKI (Infraestrutura de Chave Pública)
Você precisa de cmdlets PKI para criar e exportar seu certificado de assinatura. Para obter mais informações, consulte Cmdlets de Infraestrutura de Chave Pública.
Criar um certificado autoassinado
Um certificado autoassinado é útil para testar seu aplicativo antes de você estar pronto para publicá-lo na Loja. Siga as etapas descritas nesta seção para criar um certificado autoassinado.
Observação
Quando você cria e usa um certificado autoassinado, somente os usuários que instalam e confiam em seu certificado podem executar seu aplicativo. Isso é fácil de implementar para teste, mas pode impedir que usuários adicionais instalem seu aplicativo. Quando você estiver pronto para publicar seu aplicativo, recomendamos que você use um certificado emitido por uma fonte confiável. Esse sistema de confiança centralizada ajuda a garantir que o ecossistema de aplicativos tenha níveis de verificação para proteger os usuários contra atores mal-intencionados.
Determine o tema do aplicativo empacotado
Para usar um certificado para assinar o pacote do aplicativo, o "Assunto" no certificado deve corresponder à seção "Publicador" no manifesto do aplicativo.
Por exemplo, a seção "Identidade" no arquivo AppxManifest.xml do aplicativo deve ter esta aparência:
<Identity Name="Contoso.AssetTracker"
Version="1.0.0.0"
Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>
O "Publisher", nesse caso, é "CN=Contoso Software, O=Contoso Corporation, C=US" que precisa ser usado para criar seu certificado.
Usar New-SelfSignedCertificate para criar um certificado
Use o cmdlet New-SelfSignedCertificate do PowerShell para criar um certificado autoassinado. New-SelfSignedCertificate tem vários parâmetros para personalização, mas para fins deste artigo, nos concentraremos na criação de um certificado simples que funcionará com o SignTool. Para obter mais exemplos e usos desse cmdlet, consulte New-SelfSignedCertificate.
Com base no arquivo AppxManifest.xml do exemplo anterior, você deve usar a sintaxe a seguir para criar um certificado. Em um prompt do PowerShell com privilégios elevados:
New-SelfSignedCertificate -Type Custom -KeyUsage DigitalSignature -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -FriendlyName "Your friendly name goes here"
Observe os seguintes detalhes sobre alguns dos parâmetros:
KeyUsage: Esse parâmetro define para que o certificado pode ser usado. Para um certificado de autoassinação, esse parâmetro deve ser definido como DigitalSignature.
TextExtension: esse parâmetro inclui configurações para as seguintes extensões:
Uso estendido de chave (EKU): essa extensão indica finalidades adicionais para as quais a chave pública certificada pode ser usada. Para um certificado de auto-assinatura, esse parâmetro deve incluir a cadeia de caracteres de extensão "2.5.29.37={text}1.3.6.1.5.5.7.3.3", que indica que o certificado deve ser usado para assinatura de código.
Restrições básicas: essa extensão indica se o certificado é ou não uma AC (Autoridade de Certificação). Para um certificado de auto-assinatura, esse parâmetro deve incluir a cadeia de caracteres de extensão "2.5.29.19={text}", que indica que o certificado é uma entidade final (não uma AC).
Depois de executar esse comando, o certificado será criado e adicionado ao repositório de certificados Pessoal do Usuário. O resultado do comando também produzirá a impressão digital do certificado.
Você pode exibir seu certificado em uma janela do PowerShell usando os seguintes comandos:
Set-Location Cert:\CurrentUser\My
Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint
Isso exibirá todos os certificados no repositório de certificados Pessoal do Usuário.
Para instalar um aplicativo assinado com esse certificado, o certificado deve ser importado para o repositório de certificados Pessoas Confiáveis do Computador Local.
Exportar o certificado para um arquivo PFX
Para importar o certificado recém-criado para o repositório de certificados Pessoas Confiáveis do Computador Local, primeiro você precisa exportá-lo para um arquivo PFX (Troca de Informações Pessoais) usando o cmdlet Export-PfxCertificate .
Ao usar Export-PfxCertificate, você deve criar e usar uma senha ou usar o parâmetro "-ProtectTo" para especificar quais usuários ou grupos podem acessar o arquivo sem uma senha. Observe que um erro será exibido se você não usar o parâmetro "-Password" ou "-ProtectTo". "-Password" é recomendado para uso geral, enquanto "-ProtectTo" é útil quando sua conta de usuário é apoiada por um controlador de domínio.
Uso de senha
$password = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $password
Uso do ProtectTo
Export-PfxCertificate -cert Cert:\CurrentUser\My\<Certificate Thumbprint> -FilePath <FilePath>.pfx -ProtectTo <Username or group name>
Importar o certificado para o repositório de Pessoas Confiáveis do Computador Local
Agora que você exportou o certificado para um arquivo PFX, você pode importá-lo para o repositório Pessoas Confiáveis do Computador Local usando o cmdlet Import-PfxCertificate de uma sessão do PowerShell de administrador.
Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" -Password $password -FilePath <FilePath>.pfx
Agora que o certificado é confiável, você está pronto para assinar o pacote do aplicativo com o SignTool. Para a próxima etapa no processo de empacotamento manual, consulte Assinar um pacote de aplicativo usando SignTool.
Considerações de segurança
Ao adicionar um certificado aos repositórios de certificados do computador local, você afeta a confiança do certificado de todos os usuários no computador. É recomendável remover esses certificados quando eles não forem mais necessários para impedir que eles sejam usados para comprometer a confiança do sistema.