Mi empresa está lanzando un servicio SaaS basado en la nube. Habrá clientes de diferentes inquilinos que se conectarán a nuestros servicios a través de SSL mutuo.
Los clientes usarían una biblioteca proporcionada por nosotros para conectarnos con el servicio. Esta biblioteca basada en Java realizaría SSL mutuo utilizando almacenes de claves y almacenes de confianza. Así que tanto el servidor como los clientes están bajo nuestro control. Para enfatizar, no hay navegadores involucrados en toda la comunicación.
Para realizar con éxito la autenticación SSL mutua, deben confiar en un certificado proporcionado por nuestro servicio en la nube. Este certificado podría ser:
- Un certificado de CA público (como Comodo, Verisign, etc.). Sin embargo, pedir a los clientes que confíen en una CA pública permitiría la posibilidad de ataques en el medio, ya que otra persona puede usar un certificado diferente firmado por la misma CA para engañar a los clientes.
- CA raíz privada de nuestro propio. Esto implicaría crear nuestro propio servicio PKI y asegurar la clave privada et al. ¿Justifica nuestra situación optar por esta ruta?
- Certificado autofirmado utilizado por el servidor y los clientes. Un problema que veo con esta solución es que cuando caduque el certificado, todos los clientes de los inquilinos tendrán que volver a configurar el nuevo certificado al mismo tiempo . Eso sería inaceptable.
Otra opción que he encontrado es usar algún tipo de anclaje SSL (certificado o clave pública) que anulará la cadena de confianza. Esta no es una solución fácil de implementar.
¿Cuál es la solución recomendada?