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.