Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Atraso na Assinatura de um Assembly

Uma organização pode ter par de chaves bem protegido que os desenvolvedores não têm acesso diariamente. A chave pública geralmente está disponível, mas o acesso à chave privada é restrito a apenas alguns indivíduos. Ao desenvolver assemblies com nomes fortes, cada assembly que referencia assemblies de nomes fortes destinos contém o token da chave pública usado para fornecer um nome forte ao assembly em questão. Isso requer que a chave pública esteja disponível durante o processo de desenvolvimento.

Você pode usar a autenticação atrasada ou parcial no tempo de compilação para reservar espaço no arquivo executável portátil (PE) para a assinatura de nome com alta segurança, mas adiar a autenticação real até algum estágio posterior (normalmente antes de entregar o assembly).

As seguintes etapas descrevem o processo de autenticar com atraso um conjunto de módulos (assembly):

  1. Obtenha a parte da chave pública do par de chaves da organização que fará a eventual assinatura. Normalmente essa chave está no formato de um arquivo .snk, que pode ser criado usando a ferramenta Strong Name (Sn.exe) fornecida pelo Windows Software Development Kit (SDK).

  2. Anote o código-fonte para o assembly com dois atributos personalizados de System.Reflection:

    • AssemblyKeyFileAttribute , que passa o nome do arquivo que contém a chave pública como um parâmetro para seu construtor.

    • AssemblyDelaySignAttribute, que indica que a assinatura postergada está sendo usada, passando true como um parâmetro para o construtor. Por exemplo:

          <Assembly:AssemblyKeyFileAttribute("myKey.snk")>
          <Assembly:AssemblyDelaySignAttribute(true)>
      
      

          [assembly:AssemblyKeyFileAttribute("myKey.snk")]
          [assembly:AssemblyDelaySignAttribute(true)]
      
  3. O compilador insere a chave pública no manifesto do assembly e reserva espaço no arquivo PE para a assinatura completa com nome forte. A chave pública real deve ser armazenada enquanto o assembly é compilado para que outros conjuntos que fazem referência a este conjunto de módulos (assembly) possam obter a chave para armazenar em sua própria referência de assembly.

  4. Porque o assembly não tem uma assinatura válida com nome forte, a verificação dessa assinatura deve ser desativada. Você pode fazer isso usando a opção –VR com a ferramenta Strong Name.

    O exemplo a seguir desativa a verificação para um conjunto de módulos (assembly) denominado myAssembly.dll.

    sn –Vr myAssembly.dll
    
    Observação de cuidadoCuidado:

    Use o -VR opção durante o desenvolvimento. Adicionar um conjunto de módulos à lista de ignorar verificação cria uma vulnerabilidade na segurança. Um assembly mal-intencionado poderia usar o nome de assembly totalmente especificado (nome de assembly, versão, cultura e símbolo de chave pública) do conjunto adicionado à lista de ignorar verificação para forjar sua identidade. Isso permitiria que o conjunto mal-intencionado também ignorasse a verificação.

  5. Posteriormente, normalmente apenas antes da remessa, envie o conjunto de módulos (assembly) para a autoridade de autenticação de sua organização para a assinatura de nome com alta segurança usando a opção – R com a ferramenta Strong Name.

    O exemplo a seguir assina um conjunto de módulos (assembly) denominado myAssembly.dll com um nome de alta segurança usando o par de chaves sgKey.snk.

    sn -R myAssembly.dll sgKey.snk
    

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft