Pergunta

Eu tenho uma solução que consiste em cinco projetos, cada um deles compilado em assemblies separados.No momento estou assinando o código deles, mas tenho certeza de que estou fazendo errado.Qual é a melhor prática aqui?

  • Assine cada um com uma chave diferente;certifique-se de que as senhas sejam diferentes
  • Assine cada um com uma chave diferente;use a mesma senha se quiser
  • Assine cada um com a mesma chave
  • Algo totalmente diferente

Basicamente, não tenho certeza do que a "assinatura" faz com eles ou quais são as melhores práticas aqui, portanto, uma discussão mais geral seria boa.Tudo que eu realmente sei é que FxCop gritou comigo e foi fácil de consertar clicando na caixa de seleção "Assinar este assembly" e gerando um arquivo .pfx usando o Visual Studio (2008).

Foi útil?

Solução

Se o seu único objetivo é impedir que o FxCop grite com você, então você encontrou a melhor prática.

A melhor prática para assinar suas assembleias é algo que depende totalmente de seus objetivos e necessidades.Precisaríamos de mais informações, como a implantação pretendida:

  • Para uso pessoal
  • Para uso em PCs de rede corporativa como aplicativo cliente
  • Executando em um servidor web
  • Executando no SQL Server
  • Baixado pela internet
  • Vendido em um CD em embalagem retrátil
  • Carregado diretamente em um cérebro cibernético
  • Etc.

Geralmente você usa assinatura de código para verificar se os Assemblies vieram de uma fonte confiável específica e não foram modificados. Portanto, cada um com a mesma chave está bem. Agora, como essa confiança e identidade são determinadas é outra história.

ATUALIZAR: Como isso beneficia seus usuários finais quando você está implantando pela Web é se você obteve um certificado de assinatura de software de uma autoridade de certificação.Então, quando eles baixarem seus assemblies, eles poderão verificar se eles vieram Empório de software de Domenic, e eles não foram modificados ou corrompidos ao longo do caminho.Você também desejará assinar o instalador quando ele for baixado.Isso evita o aviso que alguns navegadores exibem de que foi obtido de uma fonte desconhecida.

Observe que você pagará por um certificado de assinatura de software.O que você obtém é que a autoridade certificadora se torna o terceiro confiável que verifica se você é quem diz ser.Isso funciona por causa de uma rede de confiança que remonta a um certificado raiz instalado em seu sistema operacional.Existem algumas autoridades de certificação para escolher, mas você vai querer ter certeza de que elas são suportadas pelos certificados raiz no sistema operacional de destino.

Outras dicas

A diferença mais óbvia entre assemblies assinados e não assinados está em um aplicativo ClickOnce.Se você não assinar, os usuários receberão uma caixa de diálogo de aviso assustadora de "Editor Desconhecido" na primeira vez que executarem seu aplicativo.Se você assinou com um certificado de uma autoridade confiável, então eles verão uma caixa de diálogo menos assustadora.Pelo que eu sei, assinar com um certificado gerado por você não afeta o aviso "Editor Desconhecido". SSL instantâneo da Comodo tem exemplos dos diálogos.

Existem algumas diferenças mais sutis.Você precisa assinar um assembly antes que ele possa ser instalado no GAC (cache de assembly global), onde pode ser compartilhado por vários aplicativos.A assinatura é essencial para a segurança de acesso ao código (CAS), mas não encontrei ninguém que pudesse fazer o CAS funcionar.Tenho certeza de que tanto o GAC quanto o CAS funcionam bem com certificados que você mesmo gera.

Isso ajuda porque o executável espera um assembly com nome forte.Ele impede que alguém substitua maliciosamente um dos seus em outro assembly.Além disso, o usuário pode conceder permissões CAS a um assembly com base no nome forte.

Eu não acho que você deveria distribuir o arquivo .pfx, você o mantém seguro para renunciar à assembléia.

É importante manter o seu arquivo PFX em segredo, pois ele contém a chave privada.

Se essa chave for disponibilizada para outras pessoas, qualquer pessoa poderá assinar assemblies ou programas que se façam passar por você.

Para associar seu nome aos seus assemblies (aos olhos do Windows), você precisará obter um certificado digital (a parte do arquivo PFX que contém seu nome) assinado por uma autoridade confiável.

Na verdade você receberá um novo certificado, mas com as mesmas informações.

Você terá que pagar por este certificado (provavelmente anualmente), mas o autoridade certificadora irá efetivamente atestar sua existência (depois de enviar por fax cópias de seu passaporte ou carteira de motorista e uma conta doméstica).

A assinatura é usada para identificar exclusivamente um assembly.Mais detalhes estão em Como:Assinar um assembly (Visual Studio).

Em termos de práticas recomendadas, não há problema em usar a mesma chave, desde que os assemblies tenham nomes diferentes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top