¿Cómo se conecta Java a través de SSL a un servidor sin que yo proporcione ninguna clave privada / pública para la comunicación? [duplicar]

1

Estoy hablando de autenticación del lado del servidor solamente.

¿Java crea un certificado interno autofirmado para esta comunicación? AFAIK del protocolo TLS, ambos necesitamos crear un secreto compartido, que se basa en lo que cada uno de nosotros tiene. Pero la implementación básica de Java SSL, no me obliga a crear un par de claves en absoluto. ¿Echo de menos algo?

¡Gracias!

    
pregunta Northern Pole 18.06.2014 - 16:02
fuente

1 respuesta

2

En SSL "usual", los pares de claves pública y privada están en el lado del servidor, no en el cliente. El cliente utiliza la clave pública del servidor (tal como se encuentra en el certificado del servidor, que el servidor envía de manera conveniente al cliente durante los primeros pasos de conexión) pero no necesita poseer un par de claves pública / privada (*).

Por supuesto, esto implica que mientras el cliente obtiene del certificado del servidor alguna garantía razonable de que está hablando con el servidor original, el servidor no tiene idea de quién puede ser el cliente conectado. Cuando no hay un certificado de cliente, SSL garantiza solo la autenticación unidireccional. Si un servidor quiere autenticar clientes, entonces el cliente y el servidor pueden ejecutar algún protocolo de autenticación adicional dentro de el túnel SSL. Eso es exactamente lo que sucede con los navegadores web y los servidores HTTPS: la capa SSL convence al cliente de que está hablando con el servidor correcto, y luego el cliente muestra la contraseña del usuario al servidor.

(*) Si el cliente y el servidor acuerdan usar un conjunto de cifrado "DHE", entonces tanto el cliente como el servidor crean pares de claves temporales Diffie-Hellman, que no verá; Las claves públicas correspondientes tampoco aparecerán como parte de los certificados. Si el cliente y el servidor utilizan un conjunto de cifrado "RSA" (no DHE) más común, entonces el intercambio de claves es realmente el cifrado asimétrico de algunos bytes aleatorios generados por el cliente, utilizando la clave pública del servidor , y no hay un par de claves públicas / privadas en el lado del cliente.

    
respondido por el Tom Leek 18.06.2014 - 16:27
fuente

Lea otras preguntas en las etiquetas