Autentificación del certificado de cliente, suficientes backends de servidor y clientes de servidor múltiples

3

Tengo un número flexible de servidores A (el mismo tipo de servidores pero ubicados en diferentes regiones, por lo que se ofrecen diferentes datos) que necesitan autenticar las llamadas a la API desde un número flexible de servidores B (el mismo tipo de servidores pero ubicados en diferentes regiones) ).

Cualquier servidor B puede llamar a cualquier servidor A. Y, por supuesto, un servidor A en una ubicación es en realidad un grupo de servidores múltiples con equilibrio de carga.

Por lo tanto, necesito que todas las llamadas de los servidores B se autentiquen al llamar a cualquier servidor A, y en lugar de hacer algo equivalente a lo que uno haría con los tokens / session / ..., me acorté a la autenticación del certificado de cliente. p>

Sin embargo, para evitar una pesadilla de despliegue de devops, ¿cuál sería la mejor estrategia? - Un certificado de cliente único utilizado por todos los servidores B (¿el más fácil?) - ¿Un certificado de cliente único utilizado por todos los servidores B para cada servidor A? - ¿Un certificado de cliente único utilizado para todos los servidores A, pero diferente por servidor B? - ¿Una multiplicación cartesiana del servidor de certificados único B para cada servidor A?

Para dar una escala, puede haber > = 10 servidores A y > = 30 servidores B.

¡Gracias!

    
pregunta ptou 02.10.2017 - 20:16
fuente

1 respuesta

2

Hay más de una forma de hacer esto, pero si lo hiciera yo, esta es la forma que elegiría:

Grupo de servidores A

Estos servidores deben tener un certificado de servidor , no uno de cliente. Dado que se accederá a todos ellos con el mismo nombre de host, deben usar el mismo certificado de servidor. Este certificado debe ser emitido por una CA que sea de confianza para los servidores en el grupo de servidores B: puede ser una CA de confianza general, como letsencrypt.org o Digicert, o puede ser una CA local que configure (en cuyo caso necesita distribuir el certificado CA raíz a los servidores B).

Grupo de servidores B

Estos servidores deben usar certificados de cliente . Aquí, usaría un certificado por servidor, en lugar de que todos compartan uno. Y usaría una CA local, interna solo para mi propia organización, para emitirlos. Configuré los servidores A para permitir el acceso de cualquier cliente que use un certificado emitido por mi CA interna.

La razón para no usar una CA pública es que es mucho más fácil otorgar acceso a todos los certificados emitidos por una CA, en lugar de verificar si el certificado contiene, por ejemplo, La organización correcta, o el nombre de host correcto. (Obviamente, también desea verificar que el certificado no haya sido revocado, por lo que su CA debe publicar las listas de revocación de certificados, o incluso permitir las comprobaciones de OCSP).

También recomendaría el uso de un sistema de administración de la configuración, como puppet o ansible, para inscribir automáticamente los servidores B en la CA interna cuando están instalados, y para renovar los certificados según sea necesario. Hay una serie de protocolos que se pueden utilizar para esto; Yo recomendaría CMP o EST. (EST es más reciente; está especificado en RFC 7030 y puede probarlo en enlace ).

Configuración de una CA interna

Si la CA interna solo se usa para crear estos certificados de cliente, puede usar prácticamente cualquier software de CA que desee y está seguro de que puede administrar.

  • OpenSSL está disponible para todos los sistemas operativos, pero no es muy fácil de usar, aunque con algunas secuencias de comandos es muy versátil.
  • Si fuera yo configurándolo, usaría EJBCA , porque ese es el software que mejor conozco y Es bastante fácil de usar. Es de código abierto y puede descargar una máquina virtual preinstalada para probarlo. (Tenga en cuenta que esta máquina preinstalada no debe usarse en producción sin realizar un trabajo significativo primero; no se ha endurecido y ¡todas las máquinas virtuales tienen la misma clave de administración!)
  • Si está ejecutando Windows, entonces Servicios de certificados de Microsoft Active Directory es probablemente su mejor opción; Se integra desde el principio.
  • Si está ejecutando RedHat, tal vez consulte RedHat Certificate System .
respondido por el Jenny D 05.10.2017 - 10:42
fuente

Lea otras preguntas en las etiquetas