La autenticación del cliente basada en certificados en SSL toma el siguiente formato: el cliente muestra sus propias cadenas de certificados y calcula una firma sobre todos los mensajes de intercambio que se intercambiaron previamente. Estos mensajes de intercambio incluyen el mensaje donde el servidor envía su cadena de certificados al cliente.
De esa manera, el servidor puede asegurarse de que el cliente (el que posee el certificado de cliente mostrado) realmente haya visto el certificado de servidor correcto, no uno falso. En ese sentido, requerir la autenticación de cliente basada en certificados puede evitar un verdadero Man-in-the-Middle (si su "prueba" muestra otra cosa, entonces rompió SSL, o hay algo sutilmente incorrecto en su situación de prueba). Sin embargo, el diablo está en los detalles ...
Un ataque MitM es una doble personificación simultánea : el atacante ejecuta un servidor falso (cuando habla con el cliente) y un cliente falso (cuando habla con el servidor). Se evita un MitM verdadero siempre que el cliente o el servidor verifiquen correctamente el certificado del par, lo que implica validar el certificado (verificando que ha sido emitido por una CA confiable, y así sucesivamente) y también usando el nombre en el certificado como identidad del par (un cliente se conecta a alguna dirección IP pero el certificado es una garantía para un nombre de servidor ).
Sin embargo, hay otros tipos de ataques que, si bien no son MitM en un sentido estricto, pueden ser problemáticos. Por ejemplo, si el cliente no realiza una validación correcta del certificado del servidor, el atacante puede ejecutar un servidor falso y hablar con el cliente. El servidor genuino no está involucrado en absoluto! Ese tipo de cosas no es un MitM genuino, pero puede ser suficiente para recuperar algunos secretos del cliente (el cliente cree que se conectó al servidor correcto y luego envía datos confidenciales a través del túnel).
El servidor no puede hacer nada para garantizar que un cliente siempre valide el certificado del servidor correctamente, en particular cuando no se contacta con el servidor, ya que el cliente se está conectando a un servidor falso operado por un atacante. En el mejor de los casos, el servidor puede asegurarse, a través de la autenticación de cliente basada en certificados, de que el cliente para este momento utiliza la clave pública del servidor correcta para su criptografía.