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 .