No hay forma de realizar una identificación antes de que se envíe el certificado, porque todo el punto del certificado es establecer la identidad. Entonces, si pudiera establecer la identidad del servidor antes de recibir el certificado, ¿cuál sería el punto de validar el certificado con el servidor? Este es realmente otro punto, un certificado es para un dominio, por lo que un cliente siempre debe verificar que el dominio en el certificado coincida con el dominio al que se está conectando. Así que técnicamente, si intento conectarme a evil.com a través de HTTPS y me da el certificado para google.com, no debería validar el certificado (¡¡aunque se sabe que las implementaciones omiten esta comprobación!). Y como dijo, podría enviar un certificado que no es el suyo propio y, si el cliente (incorrectamente) valida este certificado, el cliente enviará un secreto cifrado bajo la clave pública contenida en ese certificado al atacante. El atacante no puede descifrar estos datos ya que no tiene la clave privada. En este punto, el atacante no puede derivar ninguna clave simétrica del secreto que el cliente le envió (ya que no puede descifrar el secreto) y, como resultado, no puede descifrar ningún tráfico enviado desde el cliente.