Terminología importante de seguridad

Dos de los obstáculos a los que se enfrentan los desarrolladores cuando migran a HTTPS son los conceptos y la terminología. En esta guía, se proporciona una descripción general breve de ambos.

Chris Paler
Chris Palmer

Resumen

  • Usaste claves públicas/privadas para firmar y desencriptar mensajes entre el navegador y el servidor.
  • Una autoridad certificadora (Certificate Authority, CA) es una organización que avala las asignaciones entre las claves públicas y los nombres de DNS públicos (como "www.foobar.com").
  • Una solicitud de firma de certificado (CSR) es un formato de datos que une una clave pública con algunos metadatos sobre la entidad propietaria de la clave

¿Cuáles son los pares de claves públicas y privadas?

Un par de claves pública/privada es un par de números muy grandes que se usan como claves de encriptación y desencriptación, y que comparten una relación matemática especial. Un sistema común para los pares de claves es el criptosistema de RSA. La clave pública se usa para encriptar mensajes, y los mensajes solo se pueden desencriptar con la clave privada correspondiente. El servidor web anuncia su clave pública a nivel mundial, y los clientes (como los navegadores web) la usan para establecer un canal seguro hacia tu servidor.

¿Qué es una autoridad certificadora?

Una autoridad de certificación (AC) es una organización que avala las asignaciones entre las claves públicas y los nombres de DNS públicos (como "www.foobar.com"). Por ejemplo, ¿cómo hace un cliente para saber si una clave pública específica es la clave pública verdadera de www.foobar.com? A priori, no hay manera de saberlo. La AC confirma que una clave específica es la verdadera para un sitio en particular mediante el uso de su propia clave privada para firmar criptográficamente la clave pública del sitio web. Esta firma es inviable desde el punto de vista informático. Los navegadores (y otros clientes) mantienen las tiendas de anclaje de confianza que contienen las claves públicas que pertenecen a las AC conocidas y las usan para verificar criptográficamente las firmas de las AC.

Un certificado X.509 es un formato de datos que une una clave pública con algunos metadatos sobre la entidad que es propietaria de la clave. En el caso de la Web, el propietario de la clave es el operador del sitio y los metadatos importantes son el nombre de DNS del servidor web. Cuando un cliente se conecta a un servidor web HTTPS, este presenta su certificado para que el cliente lo verifique. El cliente verifica que el certificado no haya vencido, que el nombre de DNS coincida con el nombre del servidor al que el cliente intenta conectarse y que una CA de anclaje de confianza conocida haya firmado el certificado. En la mayoría de los casos, las AC no firman certificados de servidor web directamente. Por lo general, hay una cadena de certificados que vincula un ancla de confianza con uno o varios firmantes intermedios y, por último, con el propio certificado del servidor web (la entidad final).

¿Qué es una solicitud de firma de certificado?

Una solicitud de firma de certificados (CSR) es un formato de datos que, al igual que un certificado, une una clave pública con algunos metadatos sobre la entidad que es propietaria de la clave. Sin embargo, los clientes no interpretan las CSR, pero las AC sí lo hacen. Si quieres que una AC avale la clave pública de tu servidor web, debes enviar una CSR a la AC. La AC valida la información en la CSR y la usa para generar un certificado. Luego, la AC te enviará el certificado final, y tú instalarás ese certificado (o, lo que es más probable, una cadena de certificados) y tu clave privada en tu servidor web.