ClickOnce e Authenticode

O Authenticode é uma tecnologia da Microsoft que usa criptografia padrão do setor para assinar o código do aplicativo com certificados digitais que verificam a autenticidade do editor do aplicativo. Ao usar o Authenticode para implantação de aplicativos, o ClickOnce reduz o risco de um cavalo de Tróia. Um cavalo de Tróia é um vírus ou outro programa prejudicial que um terceiro mal-intencionado frauda como um programa legítimo proveniente de uma fonte estabelecida e confiável. A assinatura de implantações do ClickOnce com um certificado digital é uma etapa opcional para verificar se os assemblies e os arquivos não foram adulterados.

As seções a seguir descrevem os diferentes tipos de certificados digitais usados no Authenticode, como os certificados são validados usando ACs (Autoridades de Certificação), a função do carimbo de data/hora em certificados e os métodos de armazenamento disponíveis para certificados.

Authenticode e assinatura de código

Um certificado digital é um arquivo que contém um par de chaves pública/privada criptográfica, juntamente com metadados que descrevem o editor para o qual o certificado foi emitido e a agência que emitiu o certificado.

Há vários tipos de certificados Authenticode. Cada um é configurado para diferentes tipos de assinatura. Para aplicativos ClickOnce, você deve ter um certificado Authenticode válido para assinatura de código. Se você tentar assinar um aplicativo ClickOnce com outro tipo de certificado, como um certificado de email digital, ele não funcionará. Para saber mais, veja Introdução à assinatura de código.

Você pode obter um certificado para assinatura de código de uma das três maneiras a seguir:

  • Compre um de um fornecedor de certificados.

  • Receba um de um grupo em sua organização responsável pela criação de certificados digitais.

  • Gere seu próprio certificado usando o cmdlet New-SelfSignedCertificate do PowerShell ou usando MakeCert.exe, que está incluído no Software Development Kit (SDK) do Windows.

Como o uso de autoridades de certificação ajuda os usuários

Um certificado gerado usando New-SelfSignedCertificate ou o utilitário MakeCert.exe normalmente é chamado de certificado autoassinado ou certificado de teste. Esse tipo de certificado funciona da mesma forma que um arquivo .snk no .NET Framework. Ele consiste exclusivamente em um par de chaves criptográficas públicas/privadas e não contém informações verificáveis sobre o editor. Você pode usar certificados autoassinados para implantar aplicativos ClickOnce com alta confiança em uma intranet. No entanto, quando esses aplicativos forem executados em um computador cliente, o ClickOnce os identificará como provenientes de um Publicador Desconhecido. Por padrão, os aplicativos ClickOnce assinados com certificados autoassinados e implantados pela Internet não podem utilizar a Implantação de Aplicativo Confiável.

Por outro lado, se você receber um certificado de uma AC, como um fornecedor de certificados ou um departamento em sua empresa, o certificado oferecerá mais segurança para seus usuários. Ele não só identifica o editor do software assinado, mas verifica essa identidade verificando com a AC que a assinou. Se a AC não for a autoridade raiz, o Authenticode também "encadeará" de volta à autoridade raiz para verificar se a AC está autorizada a emitir certificados. Para maior segurança, você deve usar um certificado emitido por uma AC sempre que possível.

Para obter mais informações sobre como gerar certificados autoassinados, consulte New-SelfSignedCertificate ou MakeCert.

Carimbos de data/hora

Os certificados usados para assinar aplicativos ClickOnce expiram após um determinado período de tempo, geralmente de doze meses. Para remover a necessidade de assinar aplicativos constantemente com novos certificados, o ClickOnce dá suporte ao carimbo de data/hora. Quando um aplicativo é assinado com um carimbo de data/hora, seu certificado continuará sendo aceito mesmo após a expiração, desde que o carimbo de data/hora seja válido. Isso permite que aplicativos ClickOnce com certificados expirados, mas carimbos de data/hora válidos, sejam baixados e executados. Ele também permite que aplicativos instalados com certificados expirados continuem baixando e instalando atualizações.

Para incluir um carimbo de data/hora em um servidor de aplicativos, um servidor de carimbo de data/hora deve estar disponível. Para obter informações sobre como selecionar um servidor de carimbo de data/hora, consulte Como assinar manifestos de implantação e aplicativo.

Atualizar certificados expirados

Em versões anteriores do .NET Framework, a atualização de um aplicativo cujo certificado expirou poderia fazer com que o aplicativo parasse de funcionar. Para resolver esse problema, use um dos seguintes métodos:

  • Atualize o .NET framework versão 3.5 ou posterior.

  • Desinstale o aplicativo e reinstale uma nova versão com um certificado válido.

Armazenar certificados

  • Você pode armazenar certificados como um arquivo .pfx em seu sistema de arquivos ou armazená-los em um contêiner de chaves. Um usuário em um domínio do Windows pode ter vários contêineres de chave. Por padrão, MakeCert.exe armazenará certificados em seu contêiner de chave pessoal, a menos que você especifique que ele deve salvá-lo em um .pfx. Mage.exe e MageUI.exe, as ferramentas do SDK do Windows para criar implantações do ClickOnce, permitem que você use certificados armazenados de qualquer maneira.