Foto por Jon Moore en Unsplash
La web es insegura por naturaleza. Cuando se diseñaron los protocolos en los que está basada (TCP/IP) no se tuvieron en cuenta muchos de los problemas que tiene la Internet moderna. Y el protocolo HTTP, para transferir páginas web, no añadió nada al respecto tampoco hasta mucho después, con la introducción del protocolo HTTPS (la "ese" es de "Seguro") allá por 1994 por la empresa Netscape. El protocolo HTTPS original utilizaba SSL (Secure Sockets Layer) como protocolo seguro de intercambio de claves y cifrado, pero en la actualidad está obsoleto y se emplea TLS (Transport Layer Security, que va por su versión 1.3). El estándar de HTTP sobre TLS, en realidad, no se configuró hasta mayo del año 2000.
Tradicionalmente, los navegadores le han indicado a sus usuarios que se estaban conectando a un sitio seguro utilizando un iconito, generalmente uno con un candado. No deja de ser gracioso, pues no hay cosa más insegura que un candado, pero se ve que faltó imaginación 😜
Según el navegador el aspecto cambia un poco, pero todos muestran el proverbial "candadito" al lado de la dirección:
Es decir, lo importante aquí es que hasta ahora los navegadores consideran HTTP como la norma, y HTTPS como la excepción, y por eso lo marcan de esta manera.
Google lleva luchando desde hace años para cambiar esta situación, siendo el principal promotor de que HTTPS se extienda por toda la Red. Está claro que no es totalmente altruista, pues ellos son tal vez los primeros interesados en que la Web sea cada vez más segura para que haya más comercio electrónico y puedan ganar más, pero hay que reconocerles que lo están haciendo muy bien y han puesto mucho de su parte para lograrlo. Empezaron ya hace justo 4 años, en junio de 2014, anunciando que la disponibilidad de un sitio a través de HTTPS iba a ser uno de los factores que contarían para posicionarlo en sus búsquedas, ahí es nada, lo cual llevó a muchos ya a moverse hacia las conexiones seguras.
No contentos con eso están utilizando la posición de poder que tienen con su navegador Chrome (actualmente con aproximadamente un 67% de cuota de mercado) para lograr dar la vuelta a la situación: que HTTPS sea lo normal y que HTTP sea la excepción.
Por ello, a partir del próximo 23 de julio de 2018, Chrome 68 dejará de marcar los sitios seguros e incluirá una alerta de "No seguro" para los sitios HTTP,
Esto no debería pillarte por sorpresa. Como tienen un mapa de lanzamientos muy claro ya lo anunciaron oficialmente en febrero de este año.
A partir de entonces los sitios inseguros se verán así:
Esto supone un cambio enorme. Y si no te lo parece es que desconoces cómo piensa la mayor parte de los usuarios 😉 Ten en cuenta que se verá así incluso un sitio web que no tenga que recoger datos ni efectúe cobros. Un simple sitio de información estará etiquetado como no seguro si no usa HTTPS. Y cada vez va a ser más agresivo pues en el futuro próximo tienen pensado que se vea de esta manera:
Imagínate un usuario promedio viendo eso al entrar en tu blog o en tu página dedicada a la cría de chinchillas. Se irá como alma que lleva el diablo.
Esto es un cambio de paradigma y nos fuerza a la práctica totalidad de los que gestionamos un sitio web a servirlo de manera segura o desaparecer del mapa.
Mito 1: Pero... Mi sitio no necesita HTTPS para nada
Bueno, como dice Troy Hunt, esto no es una negociación. O lo haces o pereces. Pero más allá de eso supongo que te interesará que nadie, ni atacantes, ni gobiernos ni un tipo con mala idea en la Wifi gratis de un Starbucks, pueda interceptar tu página en el camino y cambiar los contenidos para servir malware o poner spam: la mala imagen te la llevas tú.
Además cada vez hay más APIs de HTML5 que solamente funcionan bajo HTTPS (Geo-localización, Websockets, Web RTC...) y cada vez serán más, por lo que si quieres crear aplicaciones con ciertas características no te va a quedar más remedio.
Otra vía para obligarte es que, en Android P, la próxima versión del sistema operativo móvil utilizado por el 90% de los usuarios, las aplicaciones no podrán hacer peticiones a ningún origen que no sea seguro.
Finalmente, tener HTTPS mejorará tu posicionamiento en las búsquedas de Google. O al menos si no lo mejora (porque todo el mundo lo tendrá), no te perjudicará, porque lo que sí es seguro es que si no lo tienes se hundirá en los resultados.
Por lo tanto: lo necesitas sí o sí.
Mito 2: Poner HTTPS es caro y complicado
Nunca ha sido muy complicado, pero sí requería seguir unos pasos básicos:
- Generar una petición para la entidad certificadora desde nuestro servidor web
- Enviar la petición a la entidad certificadora, que generaba el certificado
- Instalar el certificado en nuestro servidor, lo que casi siempre consistía en hacer doble clic sobre éste (en Windows) o lanzar un simple comando (en Linux)
- Asignar el certificado a nuestro sitio web y, opcionalmente (pero muy recomendado), crear una redirección de HTTP a HTTPS para forzar a que todo el tráfico sea seguro.
Ahora en la mayoría de los casos ya ni siquiera es necesario hacer esto, como veremos a continuación.
En cuanto al coste: hace 20 años los certificados eran carísimos y obtenerlos era complicado ya que te obligaban a verificar documentación personal o de empresa para concederlos. Con el tiempo se fueron reduciendo los precios al aumentar la competencia, y en la actualidad ya no es así. La mayor parte de las entidades certificadoras han tenido que bajar mucho los precios y puedes comprarlos por menos de 50 dólares. Ahora bien, ni siquiera es necesario que pagues nada por tu certificado SSL. Ahora existe una entidad certificadora gratuita que se ha constituido en forma de ONG y que se llama Let's Encrypt.
Casi todas las empresas tecnológicas importantes la apoyan y les donan dinero para poder seguir operando, siendo Google su principal impulsor al principio. De hecho, nosotros mismos en campusMVP les hemos donado un buen dinero hace poco y te animamos a hacer lo mismo si usas sus certificados.
Let's Encrypt ha revolucionado la Web y ha puesto al alcance de todo el mundo los certificados digitales necesarios para poder securizar gratuitamente tu web o aplicación. Ya no hay disculpa. Instalar un certificado HTTPS con Let's Encrypt es un proceso automatizado para el que solo necesitas usar una instrucción de línea de comandos.
Además existen otras opciones, como utilizar los servicios gratuitos de CloudFlare, que incluyen muchas cosas, pero la más evidente y directa es que tienes tu sitio securizado con HTTPS solo por el hecho de añadir este proxy/caché delante.
Si tienes tu sitio web colgado gratuitamente en Github Pages usando Jekyll, desde hace poco podrás tener HTTPS solo con marcar un "check" en las propiedades del repositorio, ya que GitHub y Let's Encrypt se han unido para proporcionártelo de forma gratuita.
Es decir, más fácil y barato imposible.
Mito 3: HTTPS hace que tu sitio vaya más lento
Esto sobre todo lo piensan los que, como yo, llevan en la Red muchos años. Hace mucho tiempo este podía ser el caso y existían dos causas principales:
- La conexión inicial requiere dos viajes de ida y vuelta al servidor en cada sesión que se inicie
- El cifrado de los datos hace que la CPU deba trabajar más, ya que no solo hay que enviarlos, hay que cifrarlos antes de hacerlo
Nada de esto aplica ya hoy en día, puesto que los últimos protocolos (TLS 1.2 y 1.3) permiten recordar los parámetros entre sesiones y todos los procesadores desde hace muchos años incluyen instrucciones específicas para realizar operaciones criptográficas (como AES-NI) que hacen que el impacto del cifrado sea absolutamente inapreciable.
Pero es que además la disponibilidad en todos los servidores modernos de la versión 2 de HTTP (HTTP/2) hace que, en realidad, los sitios vayan mucho más rápido. El motivo es que HTTP/2 solo funciona a través de HTTPS, y permite reutilizar las conexiones para poder descargar a través de una sola, múltiples archivos. Esto hace que se reduzca al mínimo la necesidad de establecer múltiples conexiones con el servidor (con los costes de tráfico y tiempo que ello conlleva) y se acelera enormemente el trasiego de información. De hecho las técnicas de "bundling" de archivos e imágenes (sprites) que se hacían para optimizar las aplicaciones tradicionales cada vez tienen menos sentido gracias a HTTP/2.
En resumen
Google, aprovechando el poderío de Chrome, está intentando darle la vuelta a la situación de la seguridad en la Web, haciendo que lo "anormal" y destacado pase a ser una página insegura y no al revés como ahora.
En unos pocos días, el 23 de julio, si no tienes tu sitio web bajo un dominio con HTTPS, Chrome empezará a indicar que no es seguro en la barra de direcciones. Dado que lo utiliza la mayor parte de los usuarios de Internet, deberías tomártelo en serio. Y la cosa irá a peor pronto sacando además un icono rojo de advertencia.
Esto es una gran noticia y, en contra de lo que alguna gente piensa, poner tu sitio a servir páginas con HTTPS es rápido, sencillo, gratuito y no solo no perjudicará la velocidad, sino que lo más probable es que aumente el rendimiento y la satisfacción de tus visitantes.
Así que si no lo has hecho todavía... ya estás tardando.