Partilhar via


Criar um certificado para assinatura de pacote

Este artigo explica como criar e confiar em um certificado para assinatura de pacote de aplicativo 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 pode 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á fazer referência ao 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 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 que você esteja 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 no certificado podem executar seu aplicativo. Isso é fácil de implementar para teste, mas pode impedir que outros usuários instalem seu aplicativo. Quando 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 do aplicativo tenha níveis de verificação para proteger os usuários contra agentes mal-intencionados.

Determine o assunto da sua aplicação em pacote

Para usar um certificado para assinar o pacote do aplicativo, o "Assunto" no certificado deve corresponder à seção "Editor" no manifesto do aplicativo.

Por exemplo, a seção "Identidade" no arquivo de AppxManifest.xml do seu 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 "Publicador", neste caso, é "CN=Contoso Software, O=Contoso Corporation, C=US", que precisa ser usado para criar o seu certificado.

Use New-SelfSignedCertificate para criar um certificado

Use o cmdlet New-SelfSignedCertificate PowerShell para criar um certificado autoassinado. New-SelfSignedCertificate tem vários parâmetros para personalização, mas para o propósito deste artigo, vamos nos concentrar 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: Este parâmetro define para que o certificado pode ser usado. Para um certificado de autoassinatura, esse parâmetro deve ser definido como DigitalSignature.

  • TextExtension: Este parâmetro inclui configurações para as seguintes extensões:

    • Uso Estendido de Chave (EKU): Esta extensão indica finalidades adicionais para as quais a chave pública certificada pode ser usada. Para um certificado de autoassinatura, 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 autoridade de certificação (CA). Para um certificado de autoassinatura, 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 autoridade de certificação).

Depois de executar esse comando, o certificado será criado e adicionado ao armazenamento 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 armazenamento pessoal de certificados do utilizador.

Para instalar um aplicativo assinado com esse certificado, o certificado deve ser importado para o armazenamento de certificados de Pessoas Confiáveis da Máquina Local.

Exportar o certificado para um arquivo PFX

Para importar o certificado recém-criado para o armazenamento de certificados de Pessoas Confiáveis da Máquina Local, você precisa primeiro exportá-lo para um arquivo PFX (Personal Information Exchange) 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.

Utilização da palavra-passe

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

Utilização 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 Pessoas Confiáveis da Máquina Local

Agora que você exportou o certificado para um arquivo PFX, pode importá-lo para o armazenamento de Pessoas Confiáveis da Máquina Local usando o cmdlet Import-PfxCertificate de uma sessão do Admin PowerShell.

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 do processo de empacotamento manual, consulte Assinar um pacote de aplicativo usando o SignTool.

Considerações de segurança

Ao adicionar um certificado aos armazenamentos de certificados da máquina local , afeta a confiança nos certificados de todos os utilizadores do computador. É recomendável remover esses certificados quando eles não forem mais necessários para evitar que eles sejam usados para comprometer a confiança do sistema.