Compartilhar via


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. Usando 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 deturpa como um programa legítimo proveniente de uma fonte estabelecida e confiável. Assinar implantações do ClickOnce com um certificado digital é uma etapa opcional para verificar se os assemblies e 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 autoridades de certificação (ACs), a função de carimbo de data/hora em certificados e os métodos de armazenamento disponíveis para certificados.

Autenticação 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 ao 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 obter mais informações, consulte Introdução à assinatura de código.

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

  • 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 PowerShell ou usando MakeCert.exe, que está incluído no SDK (Kit de Desenvolvimento de Software) do Windows.

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

Um certificado gerado usando New-SelfSignedCertificate ou o utilitário deMakeCert.exe geralmente é chamado de auto-certificado ou certificado de teste. Esse tipo de certificado funciona da mesma forma que um arquivo .snk funciona no .NET Framework. Ele consiste apenas em um par de chaves criptográficas públicas/privadas e não contém informações verificáveis sobre o publicador. Você pode usar certificados próprios para implantar aplicativos ClickOnce com alta segurança em uma intranet. No entanto, quando esses aplicativos são executados em um computador cliente, o ClickOnce os identificará como provenientes de um Publicador Desconhecido. Por padrão, os aplicativos ClickOnce assinados com certificados próprios e implantados pela Internet não podem utilizar implantações de aplicativos confiáveis.

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 junto à Autoridade Certificadora que a assinou. Se a AC não for a autoridade raiz, o Authenticode também verificará o encadeamento até a autoridade raiz para confirmar que 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 auto-certificados, consulte New-SelfSignedCertificate ou MakeCert.

Timestamps

Os certificados usados para assinar aplicativos ClickOnce expiram após um determinado período de tempo, normalmente doze meses. Para remover a necessidade de assinar constantemente aplicativos 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á a ser 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, baixem e executem. 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 timestamp, consulte Como assinar manifestos de aplicativos e implantações.

Atualizar certificados expirados

Em versões anteriores do .NET Framework, atualizar 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 dentro de 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.