Академический Документы
Профессиональный Документы
Культура Документы
Servicios en red
Unidad 4
Servicio HTTP
4 Servicio HTTP
CONTENIDOS
1. El servicio HTTP
2. Los tipos MIME
3. El servidor y el cliente web
4. Configuracin del servidor web (GNU/Linux)
5. El servidor web seguro
6. Activar la seguridad en Apache
1
4 Servicio HTTP
1. El servicio HTTP
En la actualidad, gran parte de las aplicaciones software, ya sean de gestin, consulta, ofimtica,
formacin, entretenimiento, comercio electrnico, etctera, son aplicaciones web que los usuarios pueden
utilizar mediante navegadores que permiten acceder a los servidores web donde se alojan, ya sea en
redes pblicas (Internet) o privadas (intranets).
El servicio HTTP es el pilar sobre el que se construye todo este entramado que hace posible la
intercomunicacin a escala planetaria.
Existe una versin segura de HTTP llamada HTTPS que permite el uso de cualquier mtodo de cifrado
siempre que lo compartan el servidor y el cliente. Basta con agregar unos componentes a los equipos
para que ejecuten el algoritmo correspondiente de encriptacin.
2
4 Servicio HTTP
1. El servicio HTTP
1.1. Cmo funciona el protocolo HTTP
El HTTP es un protocolo cliente-servidor cuyo funcionamiento est basado en el envo de mensajes. Su
mecanismo es el siguiente:
El usuario especifica en el cliente web (o navegador) la direccin de la pgina que quiere consultar
segn un formato http://direccin[:puerto][path].
El cliente web establece una conexin (socket) con el servidor web y solicita la pgina (mensaje
request).
El servidor enva dicha pgina (si no existe, enva un cdigo de error) y el cliente web interpreta el
cdigo HTML recibido (mensaje response del servidor).
Se cierra la conexin.
3
4 Servicio HTTP
1. El servicio HTTP
1.1. Cmo funciona el protocolo HTTP
El protocolo HTTP es un protocolo sin estado, es decir, no recuerda nada relativo a conexiones anteriores
a la actual. Cuando el cliente web solicita un documento HTML, puede ocurrir lo siguiente:
En ambos casos, y al tratarse de un protocolo sin estado, la conexin se libera al finalizar. Solo dura el
tiempo necesario para la transmisin del documento solicitado. Para cada objeto que se transfiere por la
red, se realiza una conexin independiente.
En la versin 1.0 del protocolo HTTP el cliente web poda solicitar del servidor solo tres operaciones:
4
4 Servicio HTTP
2. Los tipos MIME
Son una forma abierta y extensible de representar el contenido de los datos. En la actualidad se ha
generalizado su utilizacin y tambin puede llamrseles IMT.
MIME adjunta un archivo de cabecera a los documentos en el que indica el tipo de contenido del archivo.
De esta manera, el servidor web y el navegador pueden manejar y mostrar los datos correctamente.
Los MIME indican el tipo de archivo que se transfiere del servidor web al cliente o navegador web.
Se componen de tipos (indicados antes del carcter /) y subtipos (despus del carcter /). Por
ejemplo, son tipos MIME:
Text/html. Define todos los archivos de texto que contienen cdigo HTML.
Image/*. Define todos los archivos de imagen almacenados en cualquier formato (gif, jpeg, bmp,
etctera).
El prefijo especial x- queda reservado para tipos experimentales o tipos de uso interno de organizaciones.
El protocolo HTTP usa los tipos MIME en sus cabeceras para, por ejemplo:
1. Informar al cliente del tipo de datos que recibe del servidor con el encabezado content-type. Un
navegador tpico puede manejar los datos de tres formas distintas segn el tipo MIME indicado en
content-type:
5 Preguntar al usuario qu hacer ante un tipo que no se entiende, como, por ejemplo, image/x-fwf.
4 Servicio HTTP
2. Los tipos MIME
2. Permitir la negociacin de contenido. El cliente, en su peticin, incluye los tipos MIME que acepta. Por
ejemplo, si un navegador puede soportar documentos de tipo application/pdf, lo indicar en la cabecera
HTTP:
Allow: application/pdf
3. Encapsular una o ms entidades dentro del cuerpo de mensaje, mediante los tipos MIME multipart.
Quiz el ejemplo ms conocido sea el tipo multipart/form-data utilizado para encapsular los datos de un
formulario en su envo hacia el servidor mediante el mtodo POST.
Cuando el navegador hace una peticin al servidor web, utiliza un nombre que identifica al servidor. Esta
solicitud se transmite a un servidor DNS que resuelve el nombre y devuelve la direccin IP
correspondiente. La solicitud del navegador se dirige al servidor web correcto. La informacin que el
usuario proporciona al navegador para conectar con un servidor web se llama URL (Uniform Resource
Locator), que indica la forma de acceder a un recurso utilizando un protocolo de comunicacin.
6
4 Servicio HTTP
3. El cliente y el servidor web
3.1. El servidor web
Atiende peticiones recibidas de los navegadores o clientes web y debe hacerlo de forma eficiente y
segura. La ubicacin lgica de un servidor web es Internet, pero los hay que dan servicio a intranets o a
redes locales.
Cuando un usuario ejecuta Firefox y hace clic sobre un enlace a una pgina web, enviar una solicitud al
servidor web que aloja dicha pgina para que se la muestre (servir la pgina). Si la encuentra, la enviar y
si no, transmitir al cliente un mensaje de error. Cuando el cliente recibe la pgina web, interpreta el
cdigo HTML y muestra las fuentes, colores, imgenes que la componen, etctera, de forma correcta
7
4 Servicio HTTP
3. El cliente y el servidor web
3.1. El servidor web
Para que el navegador llegue al servidor web (ya sea en una red local o en Internet) ste debe tener
asignada una direccin IP nica que identifique al equipo en la red. Cuando el navegador hace una
peticin al servidor web, utiliza un nombre que identifica al servidor. Esta solicitud se transmite a un
servidor DNS que resuelve el nombre y devuelve la direccin IP correspondiente. La solicitud del
navegador se dirige al servidor web correcto. La informacin que el usuario proporciona al navegador
para conectar con un servidor web se llama URL (Uniform Resource Locator), que indica la forma de
acceder a un recurso utilizando un protocolo de comunicacin.
2. La doble barra con dos puntos (//:), que hace las veces de separador.
4. La ruta al recurso, el directorio y los subdirectorios del sitio web donde se ubica el recurso.
8
4 Servicio HTTP
Los contenidos de las pginas web pueden ser de diferentes tipos: textos, imgenes, vdeos, etctera. Su
reproduccin o visualizacin requiere otros complementos que son aadidos al navegador y que quedan
integrados de forma transparente al usuario. Adems de este funcionamiento bsico, se pueden ejecutar
determinadas aplicaciones complementarias que aumentan la funcionalidad de la pgina web:
Aplicaciones que se ejecutan en el cliente web, es decir en el equipo del usuario. El servidor enva el
cdigo al navegador y este lo ejecuta. Lgicamente, el navegador debe ser capaz de ejecutarlo y, para
ello, a menudo requiere la instalacin de extensiones.
Aplicaciones que se ejecutan en el servidor y generan un cdigo HTML que se enva al navegador, que
interpreta y muestra al usuario.
Mozilla Firefox
Internet Explorer
Otros: Amaya, Opera, Dillo o Chrome, o basados en texto como Lynx, Links, etctera.
9
4 Servicio HTTP
Desde la interfaz de Webmin, sigue este itinerario: Webmin > Configuracin de Webmin > Mdulos de
Webmin.
Desde el archivo local, busca el mdulo descargado (apache.wbm.gz) y pulsa en Instalar Mdulo.
10
4 Servicio HTTP
Comprobamos que en la pestaa Servidores aparece una nueva entrada, correspondiente a Apache.
Iremos a la pestaa Existing Virtual Hosts y accederemos al servidor por defecto de Apache (Default) y,
en la opcin Redes y Direcciones, asignaremos en Nombre de mquina de servidor nuestro
servidor.aulaSER.com.
12
4 Servicio HTTP
En Redes y Direcciones se configura la red a la que se da servicio y el puerto de escucha. La opcin por
defecto es cualquier red. Se hace lo mismo para los servidores virtuales.
En Tipos MIME se aprecia un listado completo de los tipos disponibles a partir del archivo
/etc/mime.types.
Usuarios y grupos permite decidir quin ser el usuario por defecto de Apache y el grupo al que
pertenecer. Por lo general, son www-data/www-data, respectivamente y as lo mantendremos.
La opcin Varios permite configurar algunos detalles como la informacin que se visualizar en la
cabecera HTTP del servidor, el nombre y la ruta completa del archivo de bloqueo, el archivo que
almacenar el PID del servidor, etctera.
Configure Apache Modules muestra un listado con todos los mdulos disponibles para Apache donde se
13 especifica cules estn instalados.
4 Servicio HTTP
El archivo /etc/apache2.conf contiene las directivas de configuracin global del servicio (una por
lnea).
Est dividido en secciones y cada una contiene un grupo de directivas relacionadas con dicha seccin.
Para que Apache2 sepa qu mdulos debe cargar, al arrancar el servicio dispone en el directorio
/etc/apache2/ de otros dos; en uno se halla la lista de mdulos disponibles (mods-available) y en el
otro, la de mdulos activados (mods-enabled).
Cuando se activa un mdulo de Apache, se crea un enlace simblico de los archivos correspondientes del
directorio mods-available a los de mods-enabled. Cada mdulo de Apache tiene asociados dos archivos:
nombre_modulo.load y nombre_modulo. conf. El primero tiene la carga del mdulo y el segundo,
la configuracin.
14
4 Servicio HTTP
1. Hosts virtuales basados en nombres: permiten alojar varios nombres de host (o dominios) en una
misma mquina (IP).
2. Hosts virtuales basados en IP: una mquina responde de diferente manera a diferentes direcciones IP.
Tenemos mltiples IP asignadas al sistema y queremos que cada una de ellas soporte un sitio web.
Autenticacin: comprueba la identidad del usuario. El usuario proporciona un nombre y una contrasea.
Si coinciden con las almacenadas en su base de datos, da por concluida la primera operacin.
15
4 Servicio HTTP
Bsico o simple: el usuario en el navegador web introduce su login o nombre de usuario y contrasea,
y se envan al servidor sin cifrar.
Digest: el usuario en el navegador web introduce su login de usuario y contrasea y se envan cifrados
al servidor.
Estos dos mtodos solo autentican al usuario. Los datos que se envan del navegador web al servidor o
viceversa no estn cifrados. Son formas de controlar el acceso a los recursos, pero no protegen el
intercambio de informacin.
Autorizacin: el servidor debe comprobar si el usuario validado tiene acceso a la informacin que
solicita. Para ello, el servidor dispone de una lista de los usuarios que pueden acceder a los recursos que
ofrece.
Desde Apache2 la autorizacin se gestiona con directivas del tipo <Directory> en el archivo de
configuracin o mediante la utilizacin de archivos .htaccess.
Control de acceso: establece y controla las mquinas que tienen acceso a un recurso
independientemente del usuario que accede. Desde Apache2 el control de acceso se gestiona mediante
las directivas <Directory>, <Files> y <Location>, o mediante el archivo de configuracin
16 .htaccess para controlar un directorio concreto.
4 Servicio HTTP
En este caso se utilizan las directivas Allow, que permite, y Deny, que rechaza el acceso en funcin del
nombre o la direccin de la mquina desde la que se hace la solicitud de informacin.
La directiva Order, por su parte, indica a Apache2 en qu orden tiene que aplicar las anteriores.
La sintaxis es:
Si, por ejemplo, se quisiera denegar el acceso a un equipo con IP 240.77.0.10, habra que escribir:
En el caso de que se desease denegar el acceso desde un nombre de equipo, habra que hacerlo desde
el servidor que pertenece al dominio aulaSER.com:
17
4 Servicio HTTP
Por otra parte, la directiva Order indica en qu orden se aplican las directivas Allow y Deny.
En el ejemplo siguiente, primero se evala Deny (from all) y no se permite el acceso a ningn usuario. A
continuacin, se realiza la misma operacin con Allow, que permite el acceso solo a usuarios de
pc11.aulaSER.com:
Order deny,allow
Si se usa solo la directiva Allow (sin combinar con Deny), se permitira el acceso a usuarios de esa
mquina y a cualquier otro usuario, pero en este caso solo deben entrar los que pertenecen a
pc11.aulaSER.com.
18
4 Servicio HTTP
El protocolo SSL permite establecer una comunicacin segura y codificada entre el servidor web y el
navegador. SSL trabaja conjuntamente con el protocolo HTTP, creando un protocolo de transmisin de
hipertexto seguro llamado HTTPS.
Ambos tipos presentan diversas ventajas e inconvenientes, pero cumplen con los objetivos deseados.
En concreto, la criptografa asimtrica se utiliza en los procesos de autenticacin, ya que cada usuario
protege su clave secreta. No obstante, es lenta para el cifrado, a diferencia de la criptografa simtrica,
mucho ms rpida, aunque poco eficaz a la hora de gestionar las claves.
20
4 Servicio HTTP
La asociacin entre la firma digital y la persona que la utiliza es el objetivo de los certificados digitales.
El certificado digital (CSR) se define como el conjunto de caracteres aadidos a un documento que
acreditan al autor del documento (autenticacin) y la integridad de los datos.
El certificado digital contiene la clave pblica del usuario y algunos datos personales como el nombre,
apellidos, DNI, etctera, firmados digitalmente por una autoridad certificadora (CA).
La CA es un tercero de confianza que permite que personas que no se conocen entre s, puedan confiar
en los certificados que se presentan el uno al otro. Son CA, por ejemplo, Verisign o la Fbrica Nacional de
Moneda y Timbre.
El certificado digital lo utiliza el usuario para firmar sus mensajes con su clave privada (criptografa
asimtrica), que solo l conoce y que impide que pueda despus negar que es el autor. La validez de la
firma puede ser comprobada por cualquier otro usuario que tenga la clave pblica del autor.
21
4 Servicio HTTP
El protocolo SSL (Secure Socket Layer) garantiza que todo el intercambio de informacin realizado en
una sesin de conexin se hace de forma segura mediante encriptacin.
3. Autenticacin del servidor: asegura la identidad del servidor al que se establece la conexin y al que
puede enviar el usuario informacin personal mediante el certificado de servidor.
4. Autenticacin de cliente: el servidor conoce la identidad del usuario y le permite o no su acceso a reas
protegidas. Para ello, el cliente debe tener instalado un certificado de cliente en su ordenador que
identifica el servidor al cliente.
El protocolo SSL utiliza una clave de sesin que se genera en cada transaccin. Cuanto mayor sea la
longitud de la clave, ms difcil ser romper la encriptacin. La mayora de los navegadores soportan
claves de sesin de 128 bits.
22
4 Servicio HTTP
5. El servidor web seguro
5.2. El protocolo SSL
La comunicacin se realiza en dos fases:
1. Fase de saludo (handshaking, estrechar las manos): el cliente y el servidor se identifican mediante el
intercambio de claves pblicas (encriptacin asimtrica) y llevan a cabo la autenticacin utilizando
certificados digitales.
2. Fase de comunicacin: se realiza el intercambio de datos utilizando, generalmente, una clave de tipo
simtrico.
Los navegadores llevan ya incorporados un mdulo SSL que se activa de forma automtica cuando es
necesario. Normalmente, se escribe https:// en la URL.
Activa la casilla correspondiente del mdulo ssl y, a continuacin, pulsa Activar mdulos seleccionados.
23
4 Servicio HTTP
6. Activar la seguridad en Apache
6.2. Creacin del host virtual
Desde la pestaa Creacin de host virtual, crea uno
especfico para conexiones seguras basado en el host
virtual por defecto y con directorio de inicio para
documentos /var/www/ssl/htdocs que debe
realizarse como usuario sudo.
En este directorio dejaremos un archivo index.html
preparado para la prueba de conexin.
$ sudo apache2-ssl-certificate
If you want your certificate to expire after x days call this programm with -
days x
................++++++
..............++++++
You are about to be asked to enter information that will be incorporated into
your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
25
4 Servicio HTTP
6. Activar la seguridad en Apache
6.3. Obtencin del certificado
There are quite a few fields but you can leave some blank
ser-admin@servidor:/etc/apache2/ssl$ ls
ad11d557.0 apache.pem
$cd /etc/apache2/ssl
Las rdenes debern ejecutarse desde /etc/apache2/ssl. Se copian las claves de la CA al directorio
correspondiente con el nombre cakey.pem:
Se crea el fichero miCA/serial y se guarda en modo texto. Su contenido debe ser una lnea con el
valor 01, tal como se muestra a continuacin.
$more miCA/serial
01
Ahora tan solo queda incluir en el sitio las directivas que indican que el acceso al mismo se hace
mediante el protocolo HTTPS.
27
4 Servicio HTTP
6. Activar la seguridad en Apache
6.5. Certificados para Webmin
Una vez se dispone de los certificados desde Webmin, hay que ir a Opciones SSL del servidor virtual
seguro e indicar el itinerario que debe seguirse hasta ellos.
De cualquier forma, Webmin no gestiona bien los certificados. Para tener completa seguridad de que se
han incluido en el archivo de configuracin del host virtual seguro, hay que editar el archivo e incluir las
directivas siguientes:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/miCA/cacert.pem
SSLCertificateKeyFile /etc/apache2/ssl/miCA/private/cakey.pem
28
4 Servicio HTTP
6. Activar la seguridad en Apache
6.6. Comprobacin de funcionamiento
Abrimos el navegador y vamos a https://servidor. Veremos un mensaje de aviso: el certificado que tiene
disponible no es fiable (ya lo sabamos).
29
4 Servicio HTTP
6. Activar la seguridad en Apache
6.6. Comprobacin de funcionamiento
Para activar el soporte SSL de Apache2 en Windows XP, debemos hacer lo siguiente:
<Directory />
SSLRequireSSL
</Directory>
Con estas acciones, bastara para que el servidor Apache en Windows funcionara de forma segura.
30
4 Servicio HTTP
Crditos:
Autores del libro del alumno
Edicin
Estudio177.com