Estoy tratando de entender cómo funcionan los certificados SSL / TLS, pero me falta algo. Obtuve mi conocimiento actual de este sitio web: enlace .
También he visto esta publicación: ¿Cómo funcionan los procesos para certificados digitales, firmas y ssl?
Después de revisar ambos enlaces por enésima vez, el verdadero misterio para mí es cómo el cliente verifica el certificado del servidor.
Esta es mi comprensión de los pasos:
1. Certificate Authority (CA) gives an encrypted root certificate to a server.
2.a. Server gives client a locally encrypted certificate and a public key.
2.b. Server gives client a root certificate which is decrypted with the public key already on the client's computer.
3. Client uses public keys to decrypt certificates.
4. Certificates contains information that satisfies client of servers authenticity.
Probablemente me esté perdiendo algo de información crítica en cada paso, y probablemente también falte pasos aquí. Supongamos que soy el cliente. Aquí están mis preguntas:
Q0. ¿Cómo sé (el cliente) que debo usar la clave pública dada para descifrar el certificado? En otras palabras, si un impostor puede obtener un certificado descifrado (¿cuál de los dos no puede obtener el certificado?); ¿Puede el impostor cifrar el certificado con su propia clave privada y darme una nueva clave pública?
En este caso, creo que debería poder descifrar el certificado. La comprobación de texto claro simplemente puede no funcionar. Pero, ¿puede el impostor editar el texto sin cifrar para hacer feliz a mi navegador?
Q1. ¿Qué sucede si un impostor simplemente me reenvía el certificado cifrado? Yo lo descifraría con una clave pública real. Probablemente hay algo en mi paso 4 que me estoy perdiendo.
En este caso, de nuevo, el certificado de texto claro debe tener alguna información que revele que es mala. ¿Qué es esta información?
P2. ¿Hay información de texto claro en el certificado descifrado que valida que yo (el cliente) estoy conectado al servidor al que quiero conectarme? Estoy seguro de que el certificado debería decir algo como "from stackoverflow.com". Dado que esto se realiza mediante una computadora, ¿asumo que hay muchas comparaciones hechas?
Q2.a ¿Cómo sé (el cliente) que tengo el certificado correcto? Por ejemplo, si stackoverflow.com me envió un certificado para Amazon.com, ¿cómo detectaría el navegador un problema si (por razones maliciosas) el certificado fuera descifrado?