El objetivo de un certificado SSL es que el navegador tenga un grado razonable de confianza en la clave pública del servidor para las transacciones HTTPS.
Primero, exploremos qué sucedería si no utilizáramos certificados. En cambio, el servidor enviaría la clave pública en texto sin formato y el navegador iniciaría la comunicación cifrada usándola (lo primero que haría sería encriptar su propia clave pública y enviarla de forma segura). ¿Qué pasa si yo y el atacante me metí en el medio? Podría reemplazar su clave pública sobre la marcha con la mía, tener una conexión cifrada con el navegador, descifrar todo lo que recibo, cifrarlo con su clave pública y enviarlo (y viceversa para el tráfico de tipo de respuesta). Ninguna de las partes notaría la diferencia, ya que nadie conocía las claves públicas de antemano.
Bien, hemos establecido que necesitamos alguna forma para que el navegador confíe en mi clave pública. Una forma de hacerlo sería almacenar todas las claves públicas registradas en el navegador. Por supuesto, esto requeriría una actualización cada vez que alguien registrara una clave pública, y esto llevaría a la hinchazón. También se pueden mantener las claves públicas en manos de los servidores DNS 1 , pero los servidores DNS también pueden ser falsificados y DNS no es un protocolo seguro.
Entonces, la única opción que queda es "encadenar" la confianza a través de un mecanismo de firma. El navegador almacena los detalles de algunas CA y su certificado se enviará junto con una cadena de otros certificados, cada uno firmando el siguiente y subiendo a la CA raíz / de confianza / incorporada. Es el trabajo de la CA asegurarse de que el dominio le pertenece antes de firmar un certificado por usted.
Como ser una CA es un negocio, cobran por esto. Algunos más que otros.
Si hiciera su propio certificado, obtendría un error similar a:
No hay valor para un certificado sin firmar. Es como tomar un lápiz y un folleto, un dibujo de un pasaporte que dice que eres Barack Obama. Nadie confiará en ello.
1. Después de todo, su entrada DNS se crea cuando registra un dominio. Usar un protocolo más robusto que le permita registrar simultáneamente claves públicas sería un concepto interesante.