Trabajo con un cliente y un servidor Java que nuestra startup adquirió recientemente con un acceso muy limitado a los desarrolladores que lo crearon. Hay documentación muy limitada. Parece que el cliente Java solía conectarse a su servidor con TLS, hay una regla de servidor Nginx para el punto final correcto y un certificado y una clave privada asociada a él. Sin embargo, el desarrollador afirma que no necesitaban tener una clave pública presente en la máquina que ejecuta el cliente Java.
Hasta ahora he aprendido que Java almacena estos certificados de confianza en el archivo jre/lib/security/cacerts
. Después de instalar un certificado autofirmado allí, pude hacer que el cliente Java se conectara al servidor con cifrado.
Ahora la pregunta es: ¿cómo está disponible el certificado para Java? ¿Debe instalarse cada vez manualmente en cacerts
? ¿O estará disponible para Java después de que obtengamos un certificado legítimo de alguna autoridad como Thawte? Por "estar disponible" quiero decir, ¿irán las libretas HTTP de Java y encontrarán ese certificado con la autoridad de clave pública? (No estoy familiarizado con cómo funciona la verificación de certificados con clientes que no son navegadores).
El desarrollador del cliente y servidor de Java me dice que la clave pública se descarga desde el servidor durante la conexión, lo que para mí no tiene sentido y no respeta el propósito de la seguridad, tanto si la clave pública como la la clave privada proviene de la misma fuente, ¿cómo podemos confiar en ella?
Estoy aprendiendo mucho a medida que avanzo (es un inicio) y solo sé criptografía pública en teoría de la universidad, pero en la práctica parece un poco diferente. :) Gracias.