Como criar um certificado de assinatura de pacote de aplicativos

Importante

MakeCert.exe é preterido. Para obter orientações atuais sobre como criar um certificado, consulte Criar um certificado para assinatura de pacote.

 

Saiba como usar MakeCert.exe e Pvk2Pfx.exe para criar um certificado de assinatura de código de teste, para que você possa assinar seus pacotes de aplicativos do Windows.

Você deve assinar digitalmente seus aplicativos do Windows empacotados antes de implantá-los. Se você não usar o Microsoft Visual Studio 2012 para criar e assinar seus pacotes de aplicativos, precisará criar e gerenciar seus próprios certificados de assinatura de código. Você pode criar certificados usando MakeCert.exe e Pvk2Pfx.exe do WDK (Kit de Driver do Windows). Em seguida, você pode usar os certificados para assinar os pacotes do aplicativo, para que eles possam ser implantados localmente para teste.

O que você precisa saber

Tecnologias

Pré-requisitos

Instruções

Etapa 1: Determinar o nome do editor do pacote

Para tornar o certificado de assinatura que você cria utilizável com o pacote do aplicativo que deseja assinar, o nome da entidade do certificado de assinatura deve corresponder ao atributo Publisher do elemento Identity no AppxManifest.xml desse aplicativo. Por exemplo, suponha que o AppxManifest.xml contenha:

  <Identity Name="Contoso.AssetTracker" 
    Version="1.0.0.0" 
    Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>

Para o parâmetro publisherName especificado com o utilitário MakeCert na próxima etapa, use "CN=Contoso Software, O=Contoso Corporation, C=US".

Observação

Essa cadeia de caracteres de parâmetro é especificada entre aspas e diferencia maiúsculas de minúsculas e espaços em branco.

 

A cadeia de caracteres do atributo Publisher definida para o elemento Identity no AppxManifest.xml deve ser idêntica à cadeia de caracteres especificada com o parâmetro MakeCert /n para o nome da entidade do certificado. Copie e cole a cadeia de caracteres sempre que possível.

Etapa 2: Criar uma chave privada usando MakeCert.exe

Use o utilitário MakeCert para criar um certificado de teste autoassinado e uma chave privada:

MakeCert /n publisherName /r /h 0 /eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" /e 
expirationDate /sv MyKey.pvk MyKey.cer

Esse comando solicita que você forneça uma senha para o arquivo .pvk. Recomendamos que você escolha uma senha forte e mantenha sua chave privada em um local seguro.

Recomendamos que você use os parâmetros sugeridos no exemplo anterior pelos seguintes motivos:

/r

Cria um certificado raiz autoassinado. Isso simplifica o gerenciamento do certificado de teste.

/h 0

Marca a restrição básica para o certificado como uma entidade final. Isso impede que o certificado seja usado como uma Autoridade de Certificação (CA) que pode emitir outros certificados.

/eku

Define os valores de EKU (Uso Avançado de Chave) para o certificado.

Observação

Não coloque um espaço entre os dois valores delimitados por vírgula.

 

  • 1.3.6.1.5.5.7.3.3 indica que o certificado é válido para assinatura de código. Sempre especifique esse valor para limitar o uso pretendido para o certificado.
  • 1.3.6.1.4.1.311.10.3.13 indica que o certificado respeita a assinatura vitalícia. Normalmente, se uma assinatura tiver carimbo de data/hora, desde que o certificado tenha sido válido no momento em que foi marcado para data/hora, a assinatura permanecerá válida mesmo se o certificado expirar. Esse EKU força a assinatura a expirar, independentemente de a assinatura ter carimbo de data/hora.

/e

Define a data de expiração do certificado. Forneça um valor para o parâmetro expirationDate no formato mm/dd/aaaa. Recomendamos que você escolha uma data de validade apenas pelo tempo necessário para fins de teste, geralmente menos de um ano. Essa data de expiração em conjunto com o EKU de assinatura vitalícia pode ajudar a limitar a janela na qual o certificado pode ser comprometido e usado indevidamente.

Para obter mais informações sobre outras opções, consulte MakeCert.

Etapa 3: Criar um arquivo de troca de informações pessoais (.pfx) usando Pvk2Pfx.exe

Use o utilitário Pvk2Pfx para converter os arquivos .pvk e .cer que o MakeCert criou em um arquivo .pfx que você pode usar com o SignTool para assinar um pacote de aplicativo:

Pvk2Pfx /pvk MyKey.pvk /pi pvkPassword /spc MyKey.cer /pfx MyKey.pfx [/po pfxPassword]

Os arquivos MyKey.pvk e MyKey.cer são os mesmos arquivos que MakeCert.exe criados na etapa anterior. Usando o parâmetro opcional /po, você pode especificar uma senha diferente para o .pfx resultante; caso contrário, o .pfx tem a mesma senha que MyKey.pvk.

Para obter mais informações sobre outras opções, consulte Pvk2Pfx.

Comentários

Depois de criar o arquivo .pfx, você pode usar o arquivo com SignTool para assinar um pacote de aplicativo. Para obter mais informações, consulte Como assinar um pacote de aplicativo usando o SignTool. Mas o certificado ainda não é confiável pelo computador local para implantação de pacotes de aplicativos até que você o instale no armazenamento de certificados confiáveis do computador local. Você pode usar o Certutil.exe, que vem com o Windows.

Para instalar certificados com WindowsCertutil.exe

  1. Execute Cmd.exe como administrador.

  2. Execute este comando:

    Certutil -addStore TrustedPeople MyKey.cer
    

Recomendamos que você remova os certificados se eles não estiverem mais em uso. No mesmo prompt de comando do administrador, execute este comando:

Certutil -delStore TrustedPeople certID

O certID é o número de série do certificado. Execute este comando para determinar o número de série do certificado:

Certutil -store TrustedPeople

Considerações sobre segurança

Ao adicionar um certificado aos armazenamentos de certificados do computador local, você afeta a confiança no certificado de todos os usuários no computador. Recomendamos que você instale todos os certificados de assinatura de código desejados para testar pacotes de aplicativos no repositório de certificados Pessoas Confiáveis. Remova imediatamente esses certificados quando eles não forem mais necessários, para evitar que sejam usados para comprometer a confiança do sistema.

Amostras

Criar exemplo de pacote de aplicativo

Conceitos

Práticas recomendadas de assinatura de código

Como assinar um pacote de aplicativo usando o SignTool

Assinar um pacote do aplicativo