Assinatura para aplicativos gerenciados de nome forte

A assinatura com nomes fortes fornece ao componente de software uma identidade exclusiva que não pode ser falsificada por outra pessoa.Os nomes fortes são usados para garantir que dependências entre componente e instruções de configuração correspondem exatamente ao componente e versão de componente corretos.

Um nome forte consiste da identidade do assembly (nome de texto simples, número de versão, e informações culturais), mais um símbolo de chave pública e uma assinatura digital.

Para projetos Visual C# e Visual Basic, o Visual Studio permite de alta nomeação-segura através do painel Signing na caixa Projeto Designer ; Consulte Assinatura de página, Designer de projeto.

Para projetos Visual C++, use Opções do Vinculador para assinar o conjunto de módulos (assembly); consulte Assemblies com nome forte (assinatura de Assembly) (C + + / CLI).

Razões para usar Nomes Fortes

Nomes fortes dão a um aplicativo ou componente uma identidade exclusiva que outro software pode usar para referir-se explicitamente a ele.Por exemplo, nomes fortes permitem a autores e administradores de aplicativos especificar uma versão de serviço precisa para ser usada num componente compartilhado.Isso permite que diferentes aplicativos especifiquem diferentes versões sem afetar outros aplicativos.Além disso, você pode usar o nome forte de um componente como evidência de segurança para estabelecer um relacionamento de confiança entre dois componentes.

h4fa028b.collapse_all(pt-br,VS.110).gifO Que Pode Ter Nomes Fortes

Você pode assinar assemblies do Framework .NET e manifestos XML com nomes fortes.Eles incluem o seguinte:

  • Assemblies de Aplicativo (.exe)

  • Manifestos de Aplicativo (.exe.manifest)

  • Manifestos de Implantação (.application)

  • Assemblies com Componentes Compartilhados (.dll)

h4fa028b.collapse_all(pt-br,VS.110).gifO Que Deve Ter Nomes Fortes

DLLs compartilhados devem ter nomes fortes.Independentemente de se uma DLL é ou não implantada na Cache Global de Assemblies, é recomendável usar um nome forte quando a DLL é não um detalhe de implementação particular ao aplicativo, mas sim um serviço geral que pode ser usado por mais de um aplicativo.

h4fa028b.collapse_all(pt-br,VS.110).gifO Que Tem Que Ter Nomes Fortes

Você deve assinar com nomes fortes os seguintes artefatos:

  • DLLs, se você deseja distribuí-los na Cache Global de Assemblies (GAC).

  • ClickOnceManifestos de Implantação (.application)O sistema do projeto ClickOnce permite isso por padrão para aplicativos implantados da maneira ClickOnce.

  • Assemblies de interoperabilidade primária, que são usados para interoperabilidade COM.O utilitário TLBIMP impõe nomes fortes ao criar uma assembly de interoperabilidade primária a partir um biblioteca de tipos COM.

h4fa028b.collapse_all(pt-br,VS.110).gifO Que Não Deve Ter Nomes Fortes

Em geral, você deve evitar dar nomes fortes a montagens de aplicativo EXE.Um aplicativo altamente nomeado ou componente não é possível fazer referência um componente Weak-nomeada.0Portanto, nomear fortemente um executável impede o EXE de referir-se a DLLs fracamente nomeados que são implantados com o aplicativo.

Por esse motivo, o sistema do projeto do Visual Studio não assina aplicativos EXE com nomes fortes.Em vez disso, ele assina com nome forte o manifesto do aplicativo, que aponta internamente para o aplicativo EXE de nome fraco.

Além disso, talvez você queira evitar assinar com nomes fortes componentes que são exclusivos do seu aplicativo.Nesse caso, os nomes fortes podem dificultar a gerência de dependências e adicionar um fardo desnecessário aos componentes exclusivos.

Como Atribuir um Nome Forte

No Visual Studio, você pode assinar um aplicativo ou componente com um nome forte usando o painel Signing do Project Designer.O painel Signing suporta dois métodos de assinatura com nomes fortes: usando um arquivo de chave de nome forte, ou usando um provedor de chaves.Para obter informações sobre assinatura de manifestos, consulte Como: assinar manifestos de aplicativo e implantação; Para obter informações sobre como criar arquivos de chave fortemente nomeados (.snk), consulte Como: criar um par de chaves pública/particular.

Ao usar o método do arquivo de chave, você pode usar um arquivo de chave existente ou criar um novo arquivo.Você sempre deve proteger o arquivo de chave com uma senha para impedir que alguém o use.

Provedores de chave ou armazéns de certificados fornecem outro meio de proteger suas chaves de nome forte.Alguns provedores de chave usam um cartão inteligente como um meio de verificar sua identidade e impedir sua chave de ser roubada.

Atualizando Componentes com Nomes Fortes

Um componente com nome forte não pode sofrer manutenção ou ser atualizado apenas copiando uma nova versão sobre a antiga.

Você pode atualizar uma DLL fracamente-nomeada em um diretório de aplicativo copiando apenas uma nova versão para o diretório do aplicativo.O Common Language Runtime (CLR) será carregado qualquer que seja a versão fisicamente presente.

Com DLLs assinadas com nomes fortes, você deve recompilar o aplicativo inteiro para que todas as referências da assembly apontem para a nova versão, ou você deve atualizar o arquivo .config do aplicativo para instruir o runtime para carregar a nova versão em vez daquela antiga.

Embora componentes com nomes fortes exijam um pouco mais de manutenção, a vantagem é que os aplicativos pode ser muito explícitos sobre quais versões de outros componentes são necessárias em tempo de execução.

Consulte também

Tarefas

Como: assinar manifestos de aplicativo e implantação

Como: assinar um Assembly (Visual Studio)

Referência

Assinatura de página, Designer de projeto

Conceitos

Proteção de aplicativos de ClickOnce

Assemblies de nomes fortes

Assemblies com nome forte (assinatura de Assembly) (C + + / CLI)

Outros recursos

Gerenciando o Assembly e manifesto de assinatura