Академический Документы
Профессиональный Документы
Культура Документы
Servicio HTTP
https://es.wikipedia.org/wiki/Protocolo_de_transferencia_de_hipertexto
1
El protocolo http es un protocolo sin estado, es decir, no recuerda nada relativo a conexiones
anteriores. Cuando el cliente web solicita un documento HTML pueden ocurrir dos cosas:
En ambos casos, por ser un protocolo sin estado, al final se libera la conexión. La conexión
solo tiene la duración necesaria para la transmisión del documento solicitado.
Para cada objeto que se transfiere por la red se realiza una conexión independiente. Si el
cliente solicita una página con imágenes, se realiza una conexión para el documento HTML y una
por cada una de las imágenes.
Para resolver el problema de “falta de memoria”, además de recordar la información de la
sesión actual, se utilizan las cookies (archivo de texto que se intercambia entre el cliente y el
servidor).
En la versión 1.0 del protocolo HTTP el cliente solo podía solicitar del servidor 3
operaciones:
GET. Obtiene información del servidor. (Ocurre cada vez que pulsamos en un enlace).
POST. Envía información del cliente al servidor. (Ejem. Datos de un formulario)
HEAD. Similar a get, pero solo pide la cabecera de la página.
Los tipos MIME (Multipurpose Internal Mail Extensions) son una forma de representar el
contenido de los datos. El tipo MIME indica el tipo de archivo que se está transfiriendo del servidor
web al cliente. Se compone de TIPO/SUBTIPO. Por ejemplo:
2
3. ¿Qué es un servidor web?
Es un programa que haciendo uso del protocolo HTTP atiende las peticiones de los
navegadores
adores y les proporciona los recursos solicitados. El objetivo de un servidor web es servir
páginas web a los clientes que las soliciten.
El servidor web tiene la tarea de atender peticiones recibidas desde los navegadores o clientes
web. Un servidor web no solamente
amente puede estar en internet, sino también en una intranet o red
local.
Si desde un navegador hacemos click sobre un enlace, se está enviando una solicitud al
servidor web que aloja dicha página para que nos la sirva. Si la encuentra, el servidor web la envía,
y si no la encuentra, devuelve al cliente un mensaje de error. Cuando el cliente recibe la página,
interpreta el código HTML mostrando de forma correcta los textos, fuentes de letra, colores e
imágenes que la componen.
El servidor web, además de servir documentos HTML que no cambian (estáticos), también
permite la ejecución de pequeños programas que proporcionan dinamismo a las páginas web. Estos
programas pueden ser de tipo CGI (Common Gateway Interface) ya en desuso, desuso estar escritos en
lenguajes como PHP, Java (Applets y Servlets), usar la tecnología ASP de Microsoft, etc. Con estos
programas podemos crear páginas web dinámicas que se generan de forma automática.
Para que el navegador pueda llegar al servidor web, el servidor debe tener asignada una
dirección IP única que identifica el equipo en la red.
Cuando el navegador hace una petición al servidor web, utiliza un nombre que identifica al
servidor, y esta solicitud se transmite a un servidor DNS. Éste resuelve
resuelve el nombre y devuelve la
dirección IP que corresponde al nombre. Ahora, la solicitud del navegador se encamina al servidor
web correcto. La información que el usuario proporciona al navegador para conectar con un
servidor web se llama URL (Uniform Resource
Resou Locator) que indica la forma de acceder a un
recurso utilizando un protocolo de comunicación.
<html>
<head>
<title> Pagina de la asignatura SR </title>
</head>
<body>
<center>
<h1> Bienvenidos al servidor Apache2 </h1>
<h2> Servicios en Red </h2>
</center>
</body>
</html>
El cliente web o navegador web es una aplicación que permite visualizar páginas web
alojadas en servidores web. Es capaz de interpretar código HTML mostrando el contenido de la
página en pantalla, y si la página lo permite, interactuar con ella o navegar a través de enlaces a
otras páginas web.
Las páginas web pueden contener texto, imágenes, vídeos y otros elementos multimedia. Su
visualización a veces requiere de complementos que se añaden al navegador y quedan integrados en
él.
Además, se pueden ejecutar determinadas aplicaciones que aumentan la funcionalidad de las
páginas:
- Aplicaciones que se ejecutan en el servidor web: Generan un código HTML que es enviado
al navegador. Éste lo interpreta y lo muestra al usuario. Suele estar escrito en PHP, Perl, Python,
Java, etc.
Los navegadores más utilizados son: Google Chrome, Mozilla Firefox, Safari, Opera.
4
4. Configuración del servidor web en Linux.
El archivo .htaccess es un archivo de texto oculto que puede estar en cualquiera de las
carpetas donde el servidor almacena las páginas web y sirve para definir directivas de acceso
locales a esa carpeta en particular. (Para poder usar archivos .htaccess en un directorio hay que
incluir la directiva AllowOverride en la sección <Directory> correspondiente a ese directorio)
Se debería evitar usar los ficheros .htaccess si se tiene acceso al fichero de configuración
principal de httpd. Usar ficheros .htaccess ralentiza el servidor Apache http. Cualquier directiva que
se pueda incluir en un fichero .htaccess estará mejor configurada dentro de una sección Directory,
tendrá el mismo efecto y mejor rendimiento.
Los ficheros .htaccess deberían usarse cuando un proveedor te permite hacer modificaciones
de configuración en un contexto de directorio, pero sin tener acceso de root en el servidor. En el
caso de que el administrador no esté dispuesto a hacer cambios frecuentes en la configuración,
puede que sea necesario permitir a usuarios individuales realizar estos cambios de configuración en
ficheros .htaccess por ellos mismos. Lo cual ocurre a menudo, por ejemplo, en casos donde los ISP
están albergando múltiples sitios web de usuario en una sola máquina, y quieren que sus usuarios
tengan la posibilidad de modificar sus configuraciones.
5
Más información en https://httpd.apache.org/docs/trunk/es/howto/htaccess.html
Los módulos de apache son extensiones que permiten al servidor aumentar sus prestaciones.
Son módulos de carga dinámica (Dynamic Shared Object). Podemos encontrarlos en la carpeta
/usr/lib/apache2/modules en forma de archivos acabados en “.so”.
Para que apache sepa qué módulos debe cargar al arrancar el servicio, utiliza los directorios
mods-available (módulos disponibles) y mods-enabled (módulos activados) de la carpeta
/etc/apache2. Cuando se activa un módulo de apache, se crea un enlace simbólico del archivo
correspondiente del directorio mods-available en mods-enabled. Cada módulo de apache tiene
asociado dos archivos: nombre_modulo.load y nombre_modulo.conf. El primero contiene la carga
del módulo y el segundo la configuración.
Lo que hace este comando es crear automáticamente los enlaces simbólicos de los archivos
.load y .conf de ese módulo en la carpeta mods-enabled.
Lo que hace este comando es eliminar los enlaces simbólicos de ese módulo en la carpeta
mods-enabled.
<html>
<head>
<title> Pagina de alumno </title>
</head>
<body>
<center>
<h1> Pagina web del usuario alumno </h1>
<h2> Asignatura Servicios en Red </h2>
</center>
</body>
</html>
Gracias al uso de hosts virtuales, Apache permite la posibilidad de alojar varios dominios en
una sola máquina, ejecutando más de un sitio web en el mismo servidor.
1. Hosts virtuales basados en nombres: permiten alojar varios nombres de host en una misma
máquina. Por ejemplo, para crear un host virtual que responda al nombre de progresa.com o
www.progresa.com, escribiremos en el archivo de configuración del host virtual correspondiente las
siguientes líneas:
<VirtualHost *:80>
ServerName progresa.com
ServerAlias www.progresa.com
2. Host virtuales basados en IP: Una máquina responde de diferente manera a diferentes
direcciones IP. Tenemos múltiples IPs asignadas al servidor y queremos que cada una de ellas
soporte un sitio web. Por ejemplo, para crear un host virtual que responda las peticiones dirigidas a
la dirección IP 192.168.1.20, escribiremos en el archivo de configuración del host virtual
correspondiente: <VirtualHost 192.168.1.20>
Para que apache sepa qué hosts virtuales debe cargar al arrancar el servicio, utiliza los
directorios sites-available (sitios disponibles) y sites-enabled (sitios activados) de la carpeta
/etc/apache2. Cuando se activa un host virtual, se crea un enlace simbólico del archivo
7
correspondiente del directorio sites-available en sites-enabled. Cada host virtual que creemos
tendrá asociado un archivo: nombre_de_host.conf. El archivo que contiene la configuración por
defecto del host de apache se llama 000-default.conf.
ServerName progresa.com
ServerAlias www.progresa.com
ServerAdmin admin@cieep.com
DocumentRoot /var/www/progresa.com
(Dir_IP_del_servidor) progresa.com
(Dir_IP_del_servidor) www.progresa.com
8
4.4. Autenticación en Apache.
Cuando el servidor Apache recibe una petición para servir una página web, antes de ofrecerla
verifica que dicha petición está autorizada. Realiza las siguientes comprobaciones:
Estos dos métodos solo autentican al usuario. Los datos que se envían del navegador al
servidor o viceversa no van cifrados, son formas de controlar el acceso a los recursos, pero que no
protegen el intercambio de información.
3. Control de acceso: Establece y controla las máquinas que tienen acceso a un recurso, con
independencia del usuario que accede.
En Apache2 el control de acceso se gestiona mediante las directivas <Directory>, <Files> y
<Location> o mediante un archivo de configuración .htaccess para controlar un directorio concreto.
9
<Directory /var/www/html/restringido>
AuthType Basic
AuthName “Archivos restringidos”
AuthUserFile /usr/usuarios
require valid-user
</Directory>
Cuando un usuario efectúa una petición HTTP al servidor, éste la puede atender o no en
función de la máquina desde la que se hace la solicitud.
Para gestionar esto, se utilizan las directivas Allow y Deny. La primera permite y la segunda
rechaza el acceso en función del nombre o la dirección IP de la máquina desde la que se hace la
solicitud de información.
El formato de la directiva Allow es:
La directiva Order indica que primero se hace caso a la directiva Deny y luego a la directiva
Allow. Es decir, primero negamos el acceso a todos y luego autorizamos a dominio.com.
10
5. El servidor web seguro.
Un servidor web es seguro cuando garantiza la comunicación con el cliente web con
autenticación y confidencialidad.
El protocolo SSL (Secure Socket Layer) permite establecer una comunicación segura y
codificada entre el servidor web y el navegador. SSL trabaja conjuntamente con el protocolo HTTP,
creando un protocolo de transmisión de hipertexto seguro llamado HTTPS.
El protocolo HTTPS se basa en dos tipos de criptografía:
La firma digital es una porción de código que se adjunta a un mensaje para garantizar al
destinatario quién es el remitente del mismo y que la información no ha sido alterada. Se utiliza en
un entorno de clave pública y su objetivo es garantizar la integridad del mensaje y la identidad del
firmante.
1. El emisor aplica una función hash sobre los datos y genera un “resumen” del mismo.
2. El emisor cifra el “resumen” con su clave privada y lo convierte en una firma digital.
3. El emisor envía al receptor los datos, la firma y el certificado digital del origen.
5. El receptor descifra la firma digital con la clave pública del emisor y obtiene el “resumen”
generado por el emisor.
- El único usuario que lo ha podido firmar ha sido el emisor, con lo que se garantiza la
identidad del firmante, ya que es el único que posee la clave privada que se corresponde con
la clave pública con que se ha descifrado.
11
El certificado digital es el conjunto de caracteres añadidos a un documento que acreditan al
autor del documento y garantizan la integridad de los datos. El certificado digital contiene la clave
pública del usuario y algunos datos personales, firmados digitalmente por una autoridad de
certificación (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 a otro. El objetivo del certificado
digital es asociar una clave pública a un usuario
usuari determinado.
Un servidor web es seguro cuando utiliza una combinación del protocolo SSL (HTTPS) para
poder enviar la información cifrada y un certificado digital proporcionado por una CA.
El protocolo SSL garantiza que todo el intercambio de información llevado a cabo durante
una sesión se realiza de forma segura mediante encriptación.
12
El protocolo SSL utiliza una clave de sesión que se genera en cada transacción. Cuanto mayor
sea la longitud de la clave, más difícil será romper la encriptación. La mayoría de los navegadores
soportan claves de sesión de 128 bits.
Los navegadores llevan incorporado un módulo SSL que se activa de forma automática
cuando es necesario, que suele ser al escribir https:// en la URL .
ServerName progresa.ssl.com
DocumentRoot /var/www/ssl
13
6.3. Obtención del certificado.
En un entorno real los certificados hay que solicitarlos a una autoridad de certificación, pero
nosotros lo que vamos a hacer es transformar nuestro servidor en una CA.
Country Name: ES
State or Province Name: Valencia
Locality Name: Valencia
Organization Name: Progresa
Organizational Unit Name: Progresa
Server name: progresa.ssl.com
Email address: progresa@cieep.com
Si listamos el contenido de la carpeta /etc/apache2/ssl veremos que hay dos archivos, uno de
ellos se llama apache.pem y contiene el certificado digital y las claves
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
14
7. El servidor web en Windows (IIS).
15