Assinando um pacote de aplicativos (aplicativos da Windows Store)

Por padrão, todos os pacotes de aplicativos que o Visual Studio gera são assinados com um certificado de teste. Quando você cria um pacote, o Visual Studio gera uma pasta que inclui o próprio pacote assinado. O arquivo de certificado (.cer) incluído nessa pasta contém a chave pública usada para assinar o pacote. Essa chave deve ser instalada no computador antes da instalação do pacote do aplicativo.

Gerando o certificado de teste

O arquivo de certificado (.pfx) é gerado e adicionado ao seu projeto quando o projeto é criado.

O campo Assunto do certificado é definido para o atributo Publisher do elemento Identity do arquivo do manifesto de origem (.appxmanifest).

  • Se você criar um pacote local, o valor padrão do atributo Publisher será seu nome de usuário.

  • Se você criar um pacote para a Windows Store ou associar o seu aplicativo, o atributo Publisher será definido como Publisher ID que é obtido da conta do desenvolvedor na Store quando você faz login durante a criação do pacote.

O processo de criação de certificado também adiciona uma propriedade ao arquivo de projeto:

<PackageCertificateKeyFile> RisingStar_TemporaryKey.pfx </PackageCertificateKeyFile>

O valor de PackageCertificateKeyFile é o caminho relativo ou o caminho completo do certificado de origem.

Se o certificado estiver ausente, ele será criado quando o pacote for compilado no menu Store, mas não quando o pacote for compilado em um prompt de comando. Quando o Visual Studio cria um certificado, os valores das seguintes propriedades são definidos:

  • O valor da extensão Restrições Básicas é definida como Subject Type=End Entity.

    Dica

    A extensão basic constraints identifica se o proprietário do certificado é uma autoridade de certificado (CA). Essa extensão também define o tamanho máximo dos caminhos de certificação que incluem esse certificado. A propriedade Restrições Básicas especifica se a chave pública certificada pode verificar assinaturas de certificados.

  • O valor da extensão Uso Avançado de Chave (EKU) é definido como Assinatura de Código.

Os certificados são válidos por um ano após a data em que foram criados. Para obter informações adicionais sobre como renovar um certificado, consulte Renovando um certificado.

Dica

Se um erro semelhante a “O certificado especificado é inválido porque ele expirou ou tem outro problema” aparecer durante o processo de assinatura, use o Designer de Manifesto para criar um certificado de teste que substitua o antigo.

Validando certificados

Durante o empacotamento, o Visual Studio valida o certificado especificado das seguintes maneiras:

  • Verifica a presença da extensão Restrições Básicas e seu valor, que deverá ser Subject Type=End Entity ou não especificado.

  • Verifica o valor da propriedade Uso Avançado de Chave, que deverá conter Assinatura de Código e também poderá conter Assinatura de Tempo de Vida. Qualquer outro EKU é proibido.

  • Verifica o valor da propriedade KeyUsage (KU), que deve ser Unset ou DigitalSignature.

  • Verifica a existência de uma chave privada.

  • Verifica se o certificado é ativo, não expirou e não foi revogado.

Em determinados cenários, talvez seja necessário um controle mais rígido de qual certificado será usado e, portanto, quais verificações de validação serão executadas no certificado. A propriedade EnableSigningChecks do MSBuild controla quais das verificações de certificado acima são executadas. Se você definir a propriedade como True (padrão), o Visual Studio executará todas as verificações. Se você definir a propriedade como False, o Visual Studio executará as únicas tarefas a seguir:

  • Verifica se uma chave particular existe.

  • Verifica se o valor da propriedade Uso Avançado de Chave contém Assinatura de Código.

  • Verifica se o certificado é ativo, não expirou e não foi revogado.

Dica

Quando EnableSignignChecks é definido como False, o script do PowerShell pode não funcionar porque o certificado personalizado pode não estar em conformidade com todas as regras que são exigidas para que o script instale o pacote do aplicativo. Para obter mais informações, consulte Compartilhando um pacote de aplicativos localmente (aplicativos da Windows Store).

Escolhendo um certificado alternativo

O Visual Studio cria automaticamente um certificado quando um projeto é criado, mas você também pode criar seu próprio certificado ou usar um certificado anterior para assinar um pacote.

Para criar ou usar um certificado alternativo

  1. No Gerenciador de Soluções, abra o menu de atalho do arquivo .appxmanifest, escolha Abrir com e escolha App Manifest Designer.

  2. No App Manifest Designer, escolha a guia Empacotamento e escolha o botão Escolher certificado.

  3. Na caixa de diálogo Escolher certificado, expanda a lista Configurar certificado e então escolha uma das seguintes opções:

    • Escolher do repositório de certificados
      Escolha um dos certificados Personal do repositório de certificados no sistema operacional.

    • Escolher de um arquivo
      Escolha um arquivo de certificado do sistema de arquivos.

    • Criar o certificado de teste
      Crie um certificado com um Publisher ID de sua escolha. Você também pode criar uma senha.

Seja qual for a opção escolhida, um arquivo de certificado é adicionado ao projeto e as propriedades PackageCertificateThumbprint e PackageCertificateKeyFile do projeto são atualizadas adequadamente.

Dica

Se um erro semelhante a “O certificado especificado é inválido porque ele expirou ou tem outro problema” aparecer durante o processo de assinatura, use o Designer de Manifesto para criar um certificado personalizado que substitua o antigo.

Renovando um certificado

O certificado padrão que o Visual Studio gera expira um ano após a data de sua criação. Antes que o certificado expire, você deve usar o App Manifest Designer para renovar o certificado ou, como descrito no procedimento anterior, fornecer um certificado diferente e válido.

Para renovar o certificado

  1. No Gerenciador de Soluções, abra o menu de atalho do arquivo .appxmanifest, escolha Abrir com e escolha App Manifest Designer.

  2. No App Manifest Designer, escolha a guia Empacotamento e escolha o botão Escolher certificado.

  3. Na caixa de diálogo Escolher certificado, expanda a lista Configurar certificado e então escolha Criar certificado de teste.

  4. Na caixa de diálogo Criar certificado de teste, clique no botão OK.

    O Visual Studio renova o certificado com uma nova data de validade.

Excluindo ou exportando um certificado

É possível excluir ou exportar um certificado que tenha expirado ou esteja comprometido, corrompido ou tenha sido substituído por outro certificado. Para obter informações sobre como excluir ou exportar um certificado, consulte Como usar o Console de Certificados.

Modificando aplicativos instalados

Se qualquer arquivo em um pacote instalado for modificado, a verificação da assinatura poderá impedir que aplicativo seja executado. Para modificar um pacote, faça as alterações nos arquivos de origem originais usando uma licença de desenvolvedor e, em seguida, reimplante o pacote modificado. Para obter mais informações sobre licenças de desenvolvedor, consulte Obter uma licença de desenvolvedor (aplicativos da Windows Store).

Consulte também

Conceitos

Substituindo um manifesto de pacote (aplicativos da Windows Store)

Empacotando seu aplicativo da Windows Store usando o Visual Studio 2012