HTTP o HTTPS: ¿Cuáles son las diferencias?
HTTPS es HTTP con encriptación y verificación.
La única diferencia entre ambos protocolos es que el HTTPS utiliza TLS (SSL) para encriptar las peticiones y respuestas HTTP normales, y para firmar digitalmente esas peticiones y respuestas. Como resultado, HTTPS es mucho más seguro que HTTP. Un sitio web que utiliza HTTP tiene http:// en su URL, mientras que un sitio web que utiliza HTTPS tiene https://.
¿Qué es HTTP?
HTTP significa Protocolo de transferencia de hipertexto, y es un protocolo, o un orden y sintaxis estipulados para presentar la información, que se usa para transferir datos a través de una red. La mayor parte de la información que se envía por Internet, incluidos los contenidos de los sitios web y las llamadas a las API, utiliza el protocolo HTTP. Hay dos tipos principales de mensajes HTTP: solicitudes y respuestas.
En el modelo OSI, HTTP es un protocolo de la capa 7.
¿Qué es una solicitud HTTP? ¿Qué es una respuesta HTTP?
Las solicitudes HTTP las genera el navegador de un usuario cuando este interactúa con las propiedades de la web. Por ejemplo, si un usuario hace clic en un hipervínculo, el navegador enviará una serie de peticiones «HTTP GET» para el contenido que aparece en esa página. Todas estas solicitudes HTTP se dirigen a un servidor de origen o a un servidor proxy de caché, y ese servidor generará una respuesta HTTP. Las respuestas HTTP son respuestas a las solicitudes HTTP.
¿Cómo es una solicitud HTTP típica?
Una solicitud HTTP no es más que una serie de líneas de texto que siguen el protocolo HTTP. Una solicitud GET podría tener este aspecto:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en
Esta sección de texto, que la genera el navegador del usuario, se envía a través de Internet, en texto plano, que cualquiera que esté vigilando la conexión puede leerla.
Esto es especialmente problemático cuando los usuarios envían datos confidenciales mediante un sitio web o una aplicación Web, como una contraseña, un número de tarjeta de crédito o cualquier otro dato introducido en un formulario. Cuando un usuario envía un formulario, el navegador lo traduce en una solicitud HTTP POST en lugar de una solicitud HTTP GET.
Cuando un servidor de origen recibe una solicitud HTTP, envía una respuesta HTTP, que es similar a esto:
HTTP/1.1 200 OK
Date: Wed, 30 Jan 2019 12:14:39 GMT
Server: Apache
Last-Modified: Mon, 28 Jan 2019 11:17:01 GMT
Accept-Ranges: bytes
Content-Length: 12
Vary: Accept-Encoding
Content-Type: text/plain
Hello World!
Si un sitio web usa HTTP en lugar de HTTPS, todas las solicitudes y respuestas pueden ser leídas por cualquiera que esté vigilando la sesión, incluso un agente malicioso.
¿Qué es HTTPS?
La “S” de HTTPS significa «seguro.» HTTPS utiliza TLS (o SSL) para encriptar las solicitudes y respuestas HTTP, así que en el ejemplo anterior, en lugar del texto, un atacante vería un montón de caracteres que parecen aleatorios. En primer lugar certificar que la web visitada es legítima, y en segundo lugar que se mantiene la integridad y la privacidad de los datos de conexión, verificando tanto destino como origen de lo demandado.
Los comandos cambian. En lugar de:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en
El atacante ve algo así:
t8Fw6T8UV81pQfyhDkhebbz7+oiwldr1j2gHBB3L3RFTRsQCpaSnSBZ78Vme+DpDVJPvZdZUZHpzbbcqmSW1+3xXGsERHg9YDmpYk0VVDiRvw1H5miNieJeJ/FNUjgH0BmVRWII6+T4MnDwmCMZUI/orxP3HGwYCSIvyzS3MpmmSe4iaWKCOHQ==
La encriptación en HTTPS se logra mediante la criptografía de clave pública, que utiliza un par de claves (una pública y una privada) para crear claves de sesión seguras.
En resumen, HTTPS mejora la seguridad de HTTP al:
- Encriptar la información, protegiéndola de ser leída por terceros.
- Autenticar los servidores, confirmando que son quienes dicen ser.
- Proteger contra ataques como man-in-the-middle, espionaje y manipulación de datos.
Es por eso que verás un candado 🔒 en la barra de direcciones de tu navegador cuando visitas un sitio que utiliza HTTPS, indicando que la conexión es segura.
¿Qué es un certificado SSL?
Un certificado SSL (Secure Sockets Layer) es un certificado digital que autentica la identidad de un sitio web y habilita una conexión cifrada. Veamos más detalles sobre los certificados SSL:
- Funcionamiento del Certificado SSL:
- Cuando visitas un sitio web protegido con SSL, tu navegador establece una conexión con el servidor web.
- El navegador analiza el certificado SSL y luego enlaza tu navegador con el servidor.
- Esta conexión es inmediata y segura, lo que significa que nadie más, aparte de ti y el sitio web, puede acceder o ver lo que escribes en el navegador.
- El certificado SSL garantiza que los datos transferidos entre usuarios y sitios web sean imposibles de leer. Utiliza algoritmos de cifrado para proteger la información en tránsito, como nombres, direcciones y números de tarjetas de crédito.
- Importancia del Certificado SSL:
- Protege las transacciones en línea y mantiene la privacidad y seguridad de la información del cliente.
- Evita que los delincuentes lean o modifiquen la información transferida entre dos sistemas.
- Cuando ves un ícono de candado junto a la URL en la barra de direcciones, significa que hay un certificado SSL que protege el sitio web que estás visitando.
- Tipos de Certificados SSL:
- Validación Extendida: Proporciona la máxima confianza y muestra la barra de direcciones en verde.
- Validación de Organización: Verifica la identidad de la organización.
- Validación de Dominio: Verifica la propiedad del dominio.
- Certificados Comodín: Protegen subdominios ilimitados bajo un dominio principal.
- Certificados de Dominio Único: Protegen un solo dominio.
En resumen, el certificado SSL es esencial para la seguridad en línea, protegiendo tanto a los usuarios como a los sitios web. Cuando veas HTTPS en la URL, sabrás que estás navegando de manera segura.
