Protocolo HTTP y HTTPS: Comunicación Segura en la Web
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 7,42 KB
Introducción a HTTP
El Protocolo de Transferencia de Hipertexto (HTTP), desarrollado en 1990 en el CERN, es un modelo cliente-servidor que surgió como un medio para compartir datos científicos a escala internacional de forma rápida y con un coste moderado. Es el método más común de intercambio de información en la World Wide Web (WWW). El hipertexto se refiere al contenido de las páginas web, y el protocolo de transferencia es el conjunto de normas mediante las cuales se envían las peticiones de acceso a una web y la respuesta consiguiente.
HTTPS: Seguridad en la Transferencia de Datos
HTTPS permite el uso de cifrado siempre que lo compartan el servidor y el cliente. Se agregan componentes a los equipos para que ejecuten el algoritmo de encriptación. El usuario especifica la web, y el cliente web descodifica la información de la URL (Uniform Resource Locator). Luego, el cliente web establece una conexión (socket) con el servidor web y solicita la página web (mensaje de request). El servidor envía la página web (si no la encuentra, devuelve un error 404), y el cliente interpreta el HTML recibido (mensaje de response del servidor). HTTP es un protocolo sin estado, lo que significa que no recuerda nada de las conexiones anteriores.
Versiones y Métodos de HTTP
En la versión 1.0 de HTTP, el cliente solo podía realizar las siguientes acciones:
- GET: Obtiene información del servidor.
- POST: Envía información desde el cliente al servidor, como en un formulario web.
- HEAD: Similar a GET, pero solo pide la cabecera de la página web, que contiene información como el tamaño, el tipo, etc.
Se utilizaba comúnmente un Proxy 8080. Una cookie es un archivo de texto que se intercambia entre el cliente y el servidor. HTTP 1.1 se detalla en el RFC 2068.
MIME: Tipos de Datos en Internet
MIME (Multipurpose Internet Mail Extensions) es una forma abierta y extensible de representar el contenido de los datos. Inicialmente, se desarrolló para extender las características de los correos electrónicos. También se les llama Internet Media Types. Indican el tipo de archivo que se transfiere del servidor al cliente. Se componen de tipos y subtipos separados por una barra (/). Por ejemplo, text/html
o image/*
(cualquier formato de imagen). Están controlados por la IANA (Internet Assigned Numbers Authority) según el RFC 2048. El prefijo x- se utiliza para tipos experimentales. Por ejemplo, para llamar a una aplicación externa se puede usar application/pdf
.
MIME se referencia desde:
- El servidor, que indica al navegador el tipo de datos que envía.
- La página web, donde se hace referencia a los tipos desde un enlace que lleva a un archivo externo.
- El navegador, para que interprete el tipo MIME recibido e indique qué tipos acepta. Si aparece
*/*
, acepta cualquier tipo.
Servidores Web y Peticiones Dinámicas
Un servidor web es un programa que, usando HTTP, atiende las peticiones de los navegadores y les proporciona los recursos solicitados. También permite la ejecución de programas. Las peticiones web dinámicas se componen del cliente, el servidor que atiende y los datos solicitados. Una URL consta del protocolo a usar, //:
(separador), el servidor (indicado por su IP o FQDN), la ruta al recurso y el recurso en sí.
Applets y CGI
Un Applet es un programa en Java que puede integrarse en HTML y se ejecuta en el navegador, aunque no accede a recursos locales. CGI (Common Gateway Interface) se refiere a pequeños programas alojados en el servidor que pueden usarse desde las páginas hospedadas.
Servidores Virtuales
En las directivas en las que no se especifica un valor, se toman los valores dados en el servidor principal. El servidor principal debe ser incluido como servidor virtual si se quiere tenerlo activo. Si una petición URL hace referencia a un servidor virtual que no existe, el primer servidor virtual de la lista responde.
Autenticación en Apache
La autenticación en Apache puede ser:
- Básica: El usuario introduce su login y se envía sin cifrar.
- Digest: El usuario introduce su login y se envía todo cifrado.
La autorización implica que el servidor comprueba que el usuario validado tiene acceso a la información que solicita. El control de acceso establece las máquinas que tienen acceso a un recurso, independientemente del usuario que accede.
Servidor Web Seguro y SSL
Un servidor web seguro garantiza la comunicación con el cliente web mediante autenticación y confidencialidad. SSL (Secure Socket Layer) asegura que el intercambio de información entre el servidor y el navegador se realiza de forma segura usando encriptación. En una conexión TCP/IP, SSL garantiza:
- Confidencialidad
- Integridad
- Autenticación del servidor y del cliente
SSL utiliza una clave de sesión generada para cada transacción. La mayoría de los navegadores soportan claves de 128 bits. Primero hay una fase de saludo (intercambio de claves públicas, encriptación asimétrica) y autenticación con certificados digitales, y luego una fase de comunicación. SSL trabajando con HTTP forma HTTPS. Este se basa en criptografía simétrica (clave compartida) o asimétrica (clave pública-privada).
Hash, Firma Digital y Certificado Digital
Un hash es una función o método para generar claves que representan de manera inequívoca un documento, registro, etc. Una firma digital es una porción de código que se adjunta a un mensaje y garantiza al destinatario la identidad del remitente y la integridad del mensaje. Se utiliza en entornos de clave pública.
Funcionamiento de la firma digital:
- El usuario origen aplica un algoritmo hash sobre los datos y genera un hash.
- El usuario origen, con su clave privada, convierte el hash en una firma digital.
- El usuario origen envía al usuario destino los datos, la firma y el certificado digital del origen.
- El usuario destino aplica el algoritmo hash a los datos recibidos, generando un valor hash.
- El usuario destino usa la clave pública del usuario origen y el valor hash obtenido para comprobar la firma. Si coincide, se asegura que no se ha modificado y que el único que pudo firmar fue el remitente.
Un certificado digital (CSR) es un conjunto de caracteres añadidos a un documento que acreditan la autenticación e integridad. Contiene la clave pública del usuario y sus datos personales. El usuario lo utiliza para firmar sus mensajes con su clave privada, que solo él conoce, impidiendo así que pueda negar ser el autor.
Autoridad Certificadora (CA)
La CA (Autoridad Certificadora) es un tercero de confianza que permite a personas desconocidas confiar en los certificados que se presenten. Ejemplos de CA son Verisign y la Fábrica Nacional de Moneda y Timbre.