¿Por qué los clientes (que no son navegadores) a veces no confían en los certificados firmados y válidos?

¿Por qué los clientes (que no son navegadores) a veces no confían en los certificados firmados y válidos?

Esta es una pregunta un tanto canónica... Espero que esté bien.

En mi empleo, a menudo soluciono situaciones en las que un cliente que se ejecuta en un servidor Linux (generalmente una aplicación Java) no confía en un certificado válido y firmado, un certificado en el que confían los navegadores. Nuestra solución rápida habitual es agregar el certificado al almacén de confianza de cacerts de Java, pero me molesta por qué es necesario.

Según tengo entendido hay dos posibilidades:

  1. El lado del servidor no envía la cadena completa (certificado de entidad final + certificados intermedios), en el orden correcto, Y el cliente no confía en los certificados intermedios (tal vez porque son demasiado antiguos).
  2. El almacén de confianza del cliente no contiene el certificado raíz para utilizarlo como ancla de confianza (tal vez porque es demasiado antiguo).

¿Es eso exacto? Si es así, parece que existen posibilidades alternativas para forzar la confianza del certificado de entidad final:

  • Configure la aplicación del servidor para enviar la cadena completa.
  • Actualice el cliente (por ejemplo, Java) a una versión más reciente. En mi caso, normalmente la versión principal de Java que se puede utilizar está limitada por los requisitos previos del software, pero ¿quizás cada versión menor contenga un almacén de confianza actualizado?

Se agradece cualquier idea de aclaración.

información relacionada