Aplicación de firma de código desde diferentes ubicaciones

4

En nuestra empresa, uno de los grupos de software está utilizando un certificado de un proveedor de confianza para firmar sus controladores manualmente en su máquina local. Mi grupo quiere comenzar a firmar nuestros instaladores y algunas herramientas de administrador y nos gustaría usar el mismo certificado.

El problema es que cada grupo está utilizando su propia máquina de compilación donde se deberá realizar la firma.

No soy un experto en certificación y no estoy seguro de cuál es el mejor enfoque y si es posible hacerlo:

1) Instale el certificado en cada máquina de compilación. Supongo que no se recomienda porque su certificado podría comprometerse más fácilmente ya que está ubicado en más de un lugar. 2) Instale el certificado en un servidor y cada máquina de compilación lo llama para firmar sus propios binarios.

o algo mas?

Nota: nuestra infraestructura está en Windows.

    
pregunta Francis B. 09.07.2013 - 17:07
fuente

2 respuestas

5

La parte importante es la clave privada a la que está vinculado el certificado. Desafortunadamente, algunas documentaciones ampliamente implementadas se equivocan y llaman "certificado" lo que realmente es la unión del propio certificado (que contiene la clave pública y es completamente pública) y la clave privada correspondiente (que mejor no Sé público, por supuesto).

Para mantener privada la clave privada, es mejor no copiarla en muchos lugares. Cuando una clave privada "viaja" entre computadoras, normalmente es como un PKCS # 12 archive ( anteriormente conocido como "PFX"), que contiene el certificado y la clave privada, y está protegido por contraseña. La entropía de esta contraseña es crucial para la seguridad de este tránsito , pero, por supuesto, esto protege solo la clave cuando se transfiere. Tiene razón: cuanto más se copia una clave privada, más vulnerable al robo se vuelve.

La forma normal de hacer esto es la siguiente:

  • Cada máquina de compilación tiene su propio certificado de desarrollo . Los certificados de desarrollo son certificados que usted mismo genera, con una CA personalizada (que puede ser un uso rudo de la OpenSSL herramienta de línea de comandos). Las máquinas de prueba, en las que se realiza el desarrollo, están configuradas para aceptar esta CA personalizada como confiable (o quizás las comprobaciones de firmas están desactivadas por completo).

  • Para lanzamientos de producción , los binarios que deben firmarse se transportan a una máquina específica y protegida que contiene la clave de firma real (la que corresponde al certificado que compró en el "proveedor de confianza"). Las versiones no se producen con frecuencia, por lo que este procedimiento manual debería ser aceptable.

Tener un sistema de firma gratuito para todos, accesible y al que los desarrolladores pueden acceder de forma rutinaria me parece algo peligroso. Una firma con una clave en la que confían terceros es una responsabilidad : lo hace responsable. Debe esforzarse por firmar las cosas con esa clave tan raramente como sea posible, es decir, solo para lanzamientos.

    
respondido por el Tom Leek 09.07.2013 - 19:58
fuente
3

Es más fácil colocar el certificado de firma en la máquina del desarrollador, es mucho más seguro NO hacerlo.

Idealmente, la clave de firma debe estar cifrada de modo que una persona que realmente inspecciona lo que está firmando debe ingresar una contraseña para verificar que es legítima. Y cualquier máquina que tenga acceso a la clave debe NO tener acceso directo o indirecto a Internet. No hay red en absoluto.

Se puede aprender mucho leyendo sobre los errores de firma de código de otros.

respondido por el tylerl 09.07.2013 - 19:46
fuente

Lea otras preguntas en las etiquetas