ssl - raíz - que es un certificado raiz
¿Cómo verifica una firma un ROOT CA? (4)
Supongamos que al usar https, el navegador realiza una solicitud al servidor y el servidor devuelve su certificado, incluida la clave pública y la firma de la entidad emisora de certificados.
En este punto, el navegador le pedirá a su CA que verifique si la clave pública dada pertenece realmente al servidor o no.
¿Cómo se realiza esta verificación por el certificado raíz en el navegador?
Para dar un ejemplo: Say serverX obtuvo un certificado de CA "rootCA". El navegador tiene una copia de rootCA almacenada localmente. Cuando el navegador hace ping al servidor X y responde con su clave pública + firma. ¿Ahora la CA raíz usará su clave privada para descifrar la firma y asegurarse de que sea realmente serverX?
¿Es así como funciona?
El certificado del servidor está firmado con la clave privada de la CA. El navegador utiliza la clave pública de la CA para verificar la firma. No hay comunicación directa entre el navegador y CA.
El punto importante es que el navegador se envía con la clave de CA pública. En Firefox, vea Herramientas-> Opciones-> Avanzadas-> Cifrado-> Ver Certificados-> Autoridades. Así que el navegador conoce de antemano todas las CA en las que puede confiar.
Si no entiende esto, busque los conceptos básicos de criptografía asimétrica y firmas digitales.
Los certificados se basan en el uso de un cifrado asimétrico como RSA. Usted tiene dos claves, llamadas convencionalmente las claves privadas y públicas. Algo que cifres con la clave privada solo puede ser descifrado usando la clave pública. (Y, en realidad, viceversa.)
Puede pensar que el certificado es como un pasaporte o una licencia de conducir: es una credencial que dice "esto es lo que soy, puedes confiar en él porque alguien me lo dio (como Verisign) en quien confías". Esto se hace con una "firma", que se puede calcular utilizando la clave pública de la autoridad certificadora. Si los datos son lo que la CA obtuvo originalmente, puede verificar el certificado.
El certificado contiene información de identificación sobre el propietario del certificado. Cuando lo reciba, utilice la combinación de la clave que conoce de su autoridad de confianza para confirmar que el certificado que recibió es válido y que, por lo tanto, puede inferir que confía en la persona que emitió el certificado.
Su navegador no le pide a la CA que verifique, sino que tiene una copia de los certificados raíz almacenados localmente, y usará un procedimiento criptográfico estándar para verificar que el certificado sea realmente válido.
Esta es la razón por la que cuando usted firma automáticamente un certificado, su certificado no es válido, aunque técnicamente hay una CA que debe solicitar, por supuesto puede copiar la CA autofirmada en su computadora y, a partir de entonces, confiará en sus certificaciones autofirmadas.
CACert.org tiene este mismo problema, tiene certificados válidos, pero como los navegadores no tienen sus certificados de raíz en su lista, sus certificados generan advertencias hasta que los usuarios descargan las CA raíz y las agregan a su navegador.
Su servidor tiene un certificado, que consiste en una clave privada y una pública. El servidor nunca entrega la clave privada, por supuesto, pero todos pueden obtener la clave pública. La clave pública está incrustada dentro de un formato de contenedor de certificado. Este formato contiene la dirección IP o el nombre de dominio del servidor, el propietario de esta dirección IP / nombre de dominio, una dirección de correo electrónico del propietario, etc.
Todo está firmado por una autoridad de confianza. La autoridad de confianza, también conocida como autoridad de certificación (CA) también tiene un par de claves privada / pública. Usted les da su certificado, ellos verifican que la información en el contenedor sea correcta y la firmen con su clave privada, solo ellos tienen acceso a ellos.
La clave pública de la CA se instala en el sistema del usuario de manera predeterminada, las CA más conocidas ya están incluidas en la instalación predeterminada de su sistema operativo o navegador favorito.
Cuando ahora un usuario se conecta a su servidor, su servidor usa la clave privada para firmar algunos datos, empaqueta los datos firmados junto con su clave pública y envía todo al cliente.
¿Qué puede hacer ahora el cliente? En primer lugar, puede usar la clave pública que acaba de enviarse para verificar los datos firmados. Dado que solo el propietario de la clave privada puede firmar los datos correctamente de manera que la clave pública pueda verificar la firma, sabe que quien haya firmado esta pieza de datos, esta persona posee la clave privada de la clave pública recibida. . Hasta aquí todo bien. Pero, ¿qué detiene a un pirata informático para interceptar el paquete, reemplazar los datos firmados con datos que firmó utilizando un certificado diferente y también reemplazar la clave pública con su clave pública? Nada.
Es por eso que después de que los datos firmados se hayan verificado (o antes de que se verifiquen), el cliente verifica que la clave pública recibida tenga una firma de CA válida. Usando la clave de CA pública ya instalada, verifica que la clave pública recibida haya sido firmada por una CA conocida. De lo contrario, es rechazado (ya que un hacker puede haberlo reemplazado en el camino).
Por último, pero no menos importante, comprueba la información dentro del contenedor de clave pública. ¿La dirección IP o el nombre de dominio realmente coinciden con la dirección IP o el nombre de dominio del servidor con el que el cliente está hablando actualmente? Si no, ¡algo es sospechoso!
La gente puede preguntar: ¿qué impide a un pirata informático crear su propio par de llaves y poner su nombre de dominio o dirección IP en el certificado? Fácil: si lo hace, ningún CA firmará su clave. Para obtener una firma de CA, debe demostrar que realmente es el propietario de esta dirección IP o nombre de dominio. El pirata informático no lo es, no puede demostrarlo, no obtendrá una firma. Así que esto no funcionará.
De acuerdo, ¿qué sucede si el pirata informático registra su propio dominio, crea un certificado para eso y lo firma un CA? Esto funciona, lo conseguirá firmado por CA, es su dominio, no hay problema. Sin embargo, él no puede usar esto al hackear tu conexión. Si usa este certificado, el navegador verá inmediatamente que la clave pública firmada es para el dominio example.net, pero actualmente está hablando con example.com, no con el mismo dominio, por lo tanto, algo es sospechoso nuevamente.