2008-08-29 20 views
45

Tengo una solución que consta de cinco proyectos, cada uno de los cuales se compila para separar los conjuntos. Ahora mismo estoy firmando el código, pero estoy bastante seguro de que lo estoy haciendo mal. ¿Cuál es la mejor práctica aquí?¿Mejores prácticas para firmar ensamblados .NET?

  • sesión cada uno con una clave diferente; asegúrese de que las contraseñas sean diferentes
  • Firme cada una con una clave diferente; utilizar la misma contraseña si desea
  • sesión cada uno con la misma clave
  • algo completamente distinto

Básicamente no estoy muy seguro de lo "firma" hace a ellos, o cuáles son las mejores prácticas están aquí , entonces una discusión más general sería buena. Todo lo que sé es que FxCop me gritó y fue fácil de solucionar haciendo clic en la casilla "Firmar este ensamblaje" y generando un archivo .pfx usando Visual Studio (2008).

Respuesta

42

Si su único objetivo es evitar que FxCop le grite, entonces ha encontrado la mejor práctica.

La mejor práctica para firmar sus ensamblajes es algo que depende completamente de sus objetivos y necesidades. Necesitaríamos más información como su despliegue previsto:

  • Para uso personal
  • Para el uso en PC de la red corporativa es como una aplicación cliente
  • se ejecuta en un servidor web
  • Correr en SQL Server
  • Descargada en Internet
  • Se vende en un CD en envoltura retráctil
  • Subida directamente a un cerebro cibernético
  • Etc.

Generalmente se recurre a la firma de código para verificar que las Asambleas provenían de una fuente de confianza específico y no se han modificado. Por lo tanto, cada uno con la misma clave está bien. Ahora cómo se determina esa confianza e identidad es otra historia.

ACTUALIZACIÓN: Cómo esto beneficia a sus usuarios finales cuando se despliega en la web si ha obtenido software signing certificate from a certificate authority. Luego, cuando descarguen sus ensamblajes, pueden verificar que vinieron de Domenic's Software Emporium, y no se han modificado o dañado en el camino. También querrá firmar el instalador cuando se descargue. Esto evita la advertencia de que algunos navegadores muestran que se obtuvo de una fuente desconocida.

Tenga en cuenta que pagará por un certificado de firma de software. Lo que obtienes es que la autoridad de certificación se convierta en la tercera parte confiable que verifique que eres quien dices ser. Esto funciona debido a una red de confianza que se remonta a un certificado raíz que está instalado en su sistema operativo. Hay algunas autoridades de certificación para elegir, pero querrá asegurarse de que sean compatibles con los certificados raíz en el sistema operativo de destino.

2

La firma se utiliza para identificar un ensamblaje de manera única.Más detalles están en How to: Sign an Assembly (Visual Studio).

En términos de buenas prácticas, está bien usar la misma clave siempre que los ensamblajes tengan nombres diferentes.

+0

La firma NO identifica un ensamblaje de manera única. La firma con una clave privada identifica de forma única el origen del ensamblaje. Se necesita una combinación de nombre de ensamblado, versión y clave pública para identificar de manera única un ensamblaje en el GAC. –

3

Ayuda porque el ejecutable espera un ensamblado con un nombre fuerte. Detiene a cualquiera que sustituya maliciosamente en otra asamblea por uno de los suyos. Además, el usuario puede otorgar un conjunto de permisos CAS en función del nombre seguro.

No creo que deba estar distribuyendo el archivo .pfx, lo mantiene seguro para renunciar al ensamblaje.

7

La diferencia más obvia entre ensamblajes firmados y sin firmar es en una aplicación ClickOnce. Si no lo firmas, los usuarios obtendrán un cuadro de diálogo de advertencia "Desconocido Editor" la primera vez que ejecuten tu aplicación. Si lo ha firmado con un certificado de una autoridad de confianza, verá un cuadro de diálogo que le dará menos miedo. Por lo que yo sé, firmar con un certificado que generes tú mismo no afecta la advertencia de "editor desconocido". Instant SSL from Comodo tiene ejemplos de los cuadros de diálogo.

Existen algunas diferencias más sutiles. Debe firmar un ensamblaje antes de poder instalarlo en el caché de ensamblaje global (GAC) donde varias aplicaciones lo pueden compartir. La firma es parte integral de la seguridad de acceso a los códigos (CAS), pero no he encontrado a nadie que pueda hacer que CAS funcione. Estoy bastante seguro de que tanto el GAC como CAS funcionan bien con los certificados que usted mismo genera.

2

Es importante mantener el archivo PFX en secreto, ya que contiene la clave privada.

Si esa clave está disponible para otros, cualquiera puede firmar montajes o programas que se hagan pasar por ti.

Para asociar su nombre con sus ensamblajes (a los ojos de Windows), necesitará obtener un certificado digital (la parte del archivo PFX que contiene su nombre) firmado por una autoridad de confianza.

En realidad recibirás un nuevo certificado, pero con la misma información.

Pagará por este certificado (probablemente anualmente), pero el certificate authority responderá por su existencia (después de que les haya enviado por fax copias de su pasaporte o permiso de conducir y una factura nacional).

Cuestiones relacionadas