A mediados de 2014 Google indicó que iba a considerar los certificados SSL (Secure Sockets Layer) como un elemento relevante en su algoritmo de posicionamiento (artículo en Google Webmasters Central (EN)).
A mediados de 2015, la fundación Mozilla junto con otros partners (EFF, Akamai, Cisco…) tiene previsto ofrecer certificados SSL “autoinstalables” de forma gratuita a través de su entidad de certificación (CA), Let’s Encrypt.
Y es que la cantidad de sitios web con certificados SSL no ha hecho más que crecer.
Aun así, el mercado de los SSL está en mano de unos pocos proveedores: Symantec, GoDaddy y Comodo tienen el 75% del mercado de SSL.
De forma resumida, un certificado SSL nos permite establecer una comunicación segura entre nuestro navegador y la página web de destino, gracias a que hay un tercero, la autoridad de certificación (CA) que es la que asegura que el destino al que navegamos es quien dice ser.
Para entender bien como funciona, no es necesario, pero sí interesante, conocer términos como cifrado asimétrico, PKI (Public Key Infraestructure) o la ya mencionada CA (Certificate Authority).
Como funciona la infraestructura de clave pública (PKI)
El cifrado asimétrico se basa en el intercambio de claves públicas para cifrar el contenido que solo el poseedor de la clave privada puede descifrar o para ser capaces de identificar al emisor.
El emisor cifra la información usando su clave privada y envía la clave pública al receptor. Con la clave pública, el receptor cifra el mensaje que solo la clave privada puede descifrar con lo que la comunicación del mensaje es segura.
Este sistema también se utiliza para la firma de mensajes.
Igual que antes, solo el emisor posee la clave privada con la que se cifra el mensaje. El emisor proporciona al receptor la clave pública y con ella puede descifrar el mensaje. Como solo el emisor puede cifrar los mensajes de esa clave pública, nos sirve para identificar al emisor, pero no para mantener seguro el mensaje ya que se puede descifrar usando la clave pública.
El problema de estas comunicaciones es que aunque identifiquemos al emisor, ¿cómo podemos confiar en él?
TLS/SSL resuelven este problema utilizando un tercero de confianza. El protocolo TLS/SSL utiliza una clave simétrica, y se utiliza el cifrado asimétrico para enviar una firma cifrada con la clave privada del emisor junto con la clave pública necesaria.
Los certificados y la PKI
De cara a establecer una relación de confianza, hay unas autoridades de certificación (CA) que son las que nos aseguran que el receptor es quien dice ser. Para que el emisor confíe en el receptor, este debe tener firmado su certificado público por una CA de confianza.
Los certificados de los CA, con sus claves públicas, están almacenadas por defecto en los navegadores.
Durante la comunicación navegador-servidor, lo que se produce es:
- El navegador solicita identificar al servidor
- El servidor, envía su certificado público
- El navegador comprueba la validez del certificado
- El navegador comprueba ahora la validez del CA, del tercero de confianza, en su lista de CA
- Si el certificado público es correcto, y el CA que lo ha firmado es de confianza, el navegador debe comprobar que el nombre del servidor (el dominio) del certificado es es el mismo con el que se está comunicando
- Si es así, el navegador puede confiar en que se está comunicando con un servidor concreto de forma segura
Referencias
- Este artículo está basado en Certificate Management for Embedded Systems que es donde he visto la explicación más clara y sencilla de cómo funcionan los certificados.
- Y como siempre, la Wikipedia para definiciones básicas