uso de PKI en un clúster; ¿Por instancia de aplicación o por aplicación?

3

Tengo un clúster con nodos (llamémoslos A y B por ejemplo) ejecutando microservicios idénticos (1, 2 y 3, por lo que la aplicación 2 que se ejecuta en el nodo A se llama A2). Las aplicaciones con los mismos números son completamente idénticas.

Se puede acceder a cada instancia de aplicación (microservicio) a través de HTTPS.

Me pregunto cuál es la mejor práctica para administrar el material PKI utilizado para el conector HTTPS de las aplicaciones. ¿Puedes dar algunas cosas para considerar?

Estoy considerando las siguientes configuraciones, pero realmente no puedo decidir:

  • A1, A2, A3, B1, B2, B3 deben tener sus propios pares de claves específicas (por instancia de aplicación)
  • Los pares A1 y B1, A2 y B2, A3 y B3 deben tener sus pares de claves compartidas (por aplicación)

Cada par de claves puede ser firmado por una CA de confianza común, por lo que no es un problema aquí.

    
pregunta nihilist84 11.06.2015 - 16:11
fuente

3 respuestas

1

En términos generales, cada clave privada debe ser única y las claves privadas no deben viajar.

Si tiene varias "aplicaciones" que esperan conexiones HTTPS (en el puerto 443, protocolo de enlace SSL / TLS ...) y se ejecutan en la misma máquina, entonces la aplicación no está haciendo el SSL. El SSL es manejado por el servidor web frontend (por ejemplo, un Apache o IIS): ese frontend hace el SSL, entonces (solo entonces) recibe la solicitud HTTP, aprende la ruta de destino y, por lo tanto, sabe a qué aplicación se enviará la solicitud . En ese tipo de configuración, la clave privada y el certificado no son propiedad de las aplicaciones, sino de la interfaz. En ese modelo, le daría una clave privada y un certificado por máquina .

El párrafo anterior asume que todos sus "microservicios" están realmente registrados en un motor HTTP + SSL común, como se espera si todos usan el puerto HTTPS predeterminado (443) y la misma dirección IP. podría hacer lo contrario, por ejemplo, ejecute los diferentes servicios en puertos distintos (la URL de conexión deberá incluir el nombre del puerto), o incluso en direcciones IP distintas (si cada máquina posee varias direcciones IP). En ese caso, cada microservicio puede ejecutar su propio motor HTTP + SSL y, por lo tanto, tener su propio certificado y clave privada.

Hay dos razones principales por las que desearía crear varias claves privadas y certificados:

  • Desea otorgar certificados a sistemas que no son equivalentes entre sí en términos de seguridad, por ejemplo. pertenecen a clientes distintos que no confían plenamente (o ni siquiera se conocen) entre sí. La idea es que conocer una clave privada utilizada por un servidor permite (conceptualmente) hacerse pasar por ese servidor. De manera similar, tener certificados distintos permite revocar uno sin revocar los demás.

  • Las claves privadas que viajan alrededor son "menos privadas". Es mejor cuando las claves privadas se generan en una máquina y nunca abandonan esa máquina. Por lo tanto, si tiene 10 servidores, desearía tener (al menos) 10 claves privadas. Mover las claves privadas de forma segura es factible, pero requiere cuidado (la copia en las conexiones SSH debería estar bien).

respondido por el Thomas Pornin 11.06.2015 - 17:41
fuente
0

Para mí, cada aplicación debe usar su propio par de claves. Como la aplicación en todos los nodos del clúster es la misma, deben exponerse al cliente de la misma manera.

Desde el otro lado, no veo ningún problema en tener un par de claves para todos los servidores y aplicaciones (si tienen algo en común, parte de una gran aplicación, etc.)

    
respondido por el Romeo Ninov 11.06.2015 - 17:04
fuente
0

Un argumento que viene a la mente es que, con frecuencia, los diseñadores quieren que el clúster no sepa a qué nodo está conectado un usuario; es decir, el usuario obtiene la misma salida independientemente del nodo en el que se procesó, las sesiones iniciadas en un nodo pueden tener un equilibrio de carga en un nodo diferente sin que el usuario lo sepa, etc. Tener diferentes certificados para cada nodo lo evitaría.

    
respondido por el Mike Ounsworth 11.06.2015 - 17:07
fuente

Lea otras preguntas en las etiquetas