Práctica 3 · Servidores web en Apache
Linux Mint XFCE · Apache · HTTP / HTTPS
⬇️ Descargar PDFESCENARIO
La práctica se desarrollará en una máquina virtual con Linux Mint XFCE, dentro del entorno MAx 12. El servidor web Apache puede encontrarse instalado o no. En caso de no estarlo, deberá realizarse su instalación previa, así como la comprobación de su correcto funcionamiento. Todas las tareas de instalación y configuración deberán ser debidamente documentadas, formando parte esencial de la evaluación.
FASE 0: IP Y RED
IP asignada a la máquina virtual:
La máquina virtual tiene asignada la dirección IP 192.168.60.122/24 en la interfaz enp0s3. La puerta de enlace por defecto es 192.168.60.1, lo que indica conectividad correcta dentro de la red 192.168.60.0/24. El acceso a los servidores se realiza exclusivamente mediante dirección IP, sin uso de DNS.
ip -4 addr show
ip route
FASE 1: COMPROBAR SI APACHE ESTÁ INSTALADO Y QUÉ VERSIÓN TIENE
Primero verificamos si tenemos Apache y en qué versión lo tenemos.
apache2 -v
Aquí vemos que no tenemos instalado Apache por lo que vamos a instalarlo.
sudo apt update
sudo apt install -y apache2
1.1 Instalación del servidor web Apache
Se procede a la instalación del servidor web Apache mediante el gestor de paquetes APT (apt install apache2). Durante este proceso se instalan los binarios necesarios, los ficheros de configuración y el servicio asociado al servidor web.
1.2 Habilitar e iniciar Apache
Una vez que comprobemos que tenemos instalado Apache vamos a habilitarlo e iniciarlo.
sudo systemctl enable --now apache2
El servicio Apache se habilita y se inicia mediante systemctl enable --now apache2, asegurando su ejecución inmediata y su arranque automático en futuros reinicios del sistema.
1.3 Verificación de la instalación
command -v apache2
command -v apachectl
apache2 -v
systemctl status apache2 --no-pager
Con esto comprobamos que Apache existe en el sistema, la versión que tiene y que el servicio está activo (active (running)).
Se verifica la correcta instalación de Apache mediante la localización de sus binarios (command -v apache2), la consulta de la versión instalada (apache2 -v) y la comprobación del estado del servicio con systemctl status apache2, confirmando que el servidor se encuentra activo y en funcionamiento.
FASE 2: CONFIGURACIÓN DE PUERTOS Y ARQUITECTURA APACHE
A continuación, vamos a preparar Apache para alojar tres servidores web diferenciados en la misma máquina, utilizando puertos distintos y niveles de seguridad diferentes.
2.1 Copia de seguridad del fichero de puerto
sudo cp /etc/apache2/ports.conf /etc/apache2/ports.conf.bak
Antes de modificar la configuración del servidor, realiza una copia de seguridad del fichero /etc/apache2/ports.conf, permitiendo restaurar la configuración original en caso de error.
2.2 Copia de seguridad del fichero de puerto
sudo cp /etc/apache2/ports.conf /etc/apache2/ports.conf.bak
Comprueba que en el fichero aparezcan estas líneas (no importa el orden, pero debe de existir, si falta alguna añádela al fichero)
Ahora mismo nuestro archivo nos dice:
- Apache escucha en 80
- Apache escuchará en 443 cuando SSL esté activo
- NO escucha en el puerto 81, que es obligatorio para la Web nº2
Tenemos que añadir por los tanto Listen 81 justo debajo de Listen 80
Guardar y salir (nano)
- Ctrl + O
- Enter
- Ctrl + X
2.3 Desactivar el sitio por defecto de Apache
Apache incluye un VirtualHost por defecto que no debe usarse en esta práctica.
Se deshabilita el sitio virtual por defecto (000-default.conf) incluido en la instalación inicial de Apache, ya que este se encuentra configurado para escuchar en el puerto 80.
Dado que el servidor web nº 1 de la práctica también utiliza el puerto 80, mantener ambos sitios activos podría provocar conflictos o servir contenido no deseado.
De este modo, se garantiza que el tráfico HTTP en el puerto 80 sea atendido exclusivamente por el servidor web definido específicamente para esta práctica.
sudo a2dissite 000-default.conf
Esto significa que:
- El sitio por defecto ha sido desactivado
- Apache ya no usará 000-default.conf
- Falta aplicar el cambio (reload o restart)
2.4 Comprobar sintaxis y reiniciar Apache
sudo apachectl configtest
sudo systemctl restart apache2
Se valida la sintaxis de los ficheros de configuración de Apache mediante apachectl configtest, obteniendo como resultado Syntax OK. Posteriormente, se reinicia el servicio Apache para aplicar los cambios realizados.
2.5 Verificar que Apache escucha en los puertos requeridos
sudo ss -ltnp | grep -E ':(80|81|443)\s'
Se verifica que el servidor Apache se encuentra escuchando correctamente en los puertos 80, 81 y 443, confirmando la correcta configuración de la arquitectura web basada en múltiples servidores virtuales por puerto.
Se verifica mediante el comando ss -ltnp que el servidor Apache se encuentra escuchando correctamente en los puertos 80 y 81, correspondientes a los servidores web no seguros definidos en la práctica.
En este punto, el puerto 443 aún no se encuentra en escucha, ya que la configuración del servidor web seguro (HTTPS) y la activación del módulo SSL se realizarán en fases posteriores.
FASE 3: ESTRUCTURA DE DIRECTORIOS Y CONTENIDOS
En este punto vamos a crear la estructura de directorios para cada uno de los tres servidores web.
3.1 Creación de la estructura
sudo mkdir -p /var/www/web1/{base,documentos,imagenes}
sudo mkdir -p /var/www/web2/{base,documentos,imagenes}
sudo mkdir -p /var/www/web3/{base,documentos,imagenes}
Comprobamos que se han creado los directorios correctamente:
ls -l /var/www
3.2 Asignación de propietario y permisos
Debemos configurar los permisos y propietarios con los siguientes comandos:
sudo chown -R www-data:www-data /var/www/web1 /var/www/web2 /var/www/web3
sudo find /var/www/web1 /var/www/web2 /var/www/web3 -type d -exec chmod 755 {} \;
sudo find /var/www/web1 /var/www/web2 /var/www/web3 -type f -exec chmod 644 {} \;
Y comprobamos que se han dado bien los permisos con:
ls -ld /var/www/web1 /var/www/web2 /var/www/web3
Se comprueba que los directorios raíz de los servidores web (/var/www/web1, /var/www/web2 y /var/www/web3) existen y tienen asignado como propietario y grupo al usuario www-data.
Los permisos configurados (755 para directorios y 644 para ficheros) garantizan el acceso de lectura al contenido web por parte del servidor Apache, cumpliendo las buenas prácticas de seguridad.
3.3 Creación del contenido mínimo en documentos e imagenes
Aunque los ficheros HTML se crean y documentan de forma individual en las fases correspondientes a cada servidor web, en esta fase se completa la estructura mínima exigida mediante la creación de ficheros .doc y .jpg en los directorios documentos e imagenes de cada web.
Creación de ficheros .doc
Se generan cinco documentos .doc en el directorio documentos de cada servidor web mediante los siguientes comandos:
for w in web1 web2 web3; do
for i in 1 2 3 4 5; do
echo "Documento $i del servidor $w" | sudo tee /var/www/$w/documentos/doc$i.doc >/dev/null
done
done
Creación de ficheros .jpg
Se crean cinco imágenes .jpg de ejemplo en el directorio imagenes de cada servidor web:
for w in web1 web2 web3; do
for i in 1 2 3 4 5; do
sudo convert -size 200x200 xc:black /var/www/$w/imagenes/img$i.jpg
done
done
(En caso de no disponer de ImageMagick, se instala previamente mediante sudo apt install imagemagick)
3.4 Comprobación del contenido creado
Se verifica que cada servidor web dispone del contenido mínimo exigido:
ls /var/www/web1/documentos /var/www/web1/imagenes
ls /var/www/web2/documentos /var/www/web2/imagenes
ls /var/www/web3/documentos /var/www/web3/imagenes
Cada uno de los tres servidores web dispone de:
- Cinco ficheros HTML en el directorio base (creados en las fases específicas de cada web que se verán en las fases 4, 5 y 6).
- Cinco ficheros .doc en el directorio documentos.
- Cinco ficheros .jpg en el directorio imagenes.
FASE 4: SERVIDOR WEB Nº 1 (PUERTO 80 - HTTP)
4.1 Crear el VirtualHost de la Web nº1
sudo nano /etc/apache2/sites-available/web1.conf
Contenido del fichero:
<VirtualHost *:80>
DocumentRoot /var/www/web1/base
<Directory /var/www/web1/base>
Require all granted
</Directory>
</VirtualHost>
Guardar y salir:
- Ctrl + O
- Enter
- Ctrl + X
Con el contenido de este fichero definimos un servidor virtual en el puerto 80 mediante la directiva <VirtualHost *:80>.
El contenido web se sirve desde el directorio /var/www/web1/base, configurado como DocumentRoot.
Mediante la directiva Require all granted se permite el acceso al contenido desde cualquier cliente.
Se utiliza una configuración sencilla y funcional.
4.2 Activar el sitio web nº1
sudo a2ensite web1.conf
sudo systemctl reload apache2
El servidor web nº1 se activa mediante el comando a2ensite web1.conf.
Posteriormente, se recarga la configuración del servidor Apache para aplicar los cambios sin interrumpir el servicio.
4.3 Crear el contenido HTML (fondo rojo)
Archivo principal index.html
sudo nano /var/www/web1/base/index.html
Contenido:
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Web 1</title>
<style>
body {
background: red;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
h1 {
font-size: 60px;
color: white;
text-align: center;
}
</style>
</head>
<body>
<h1>Web Nº 1 no segura del alumno Clara</h1>
</body>
</html>
En la terminal del sistema vamos a crear los ficheros HTML necesarios para completar el contenido mínimo del servidor web nº 1.
Mediante un bucle for, se generan de forma automática cuatro ficheros HTML adicionales (pagina2.html a pagina5.html) dentro del directorio /var/www/web1/base, complementando al fichero principal index.html.
Para ello, ejecuta el siguiente comando en la terminal:
for i in 2 3 4 5; do
echo "<html><body><h2>Pagina $i Web 1</h2></body></html>" | \
sudo tee /var/www/web1/base/pagina$i.html >/dev/null
done
Comprobamos que se han creado correctamente:
ls /var/www/web1/base
4.4 Comprobación del acceso a la Web nº1
curl -I http://127.0.0.1
curl -I http://192.168.60.122
Acceso desde navegador:
http://192.168.60.122
Se verifica el correcto funcionamiento del servidor web nº 1 mediante el comando curl -I, comprobando la respuesta HTTP tanto desde la interfaz local (127.0.0.1) como desde la dirección IP asignada a la máquina virtual (192.168.60.122).
En ambos casos, el servidor responde con el código de estado HTTP/1.1 200 OK, lo que confirma que el servidor web no seguro del puerto 80 se encuentra operativo y accesible correctamente.
FASE 5: SERVIDOR WEB Nº 2 (PUERTO 81 - HTTP)
5.1 Crear el VirtualHost de la Web nº 2
En la terminal, crea el fichero de configuración:
sudo nano /etc/apache2/sites-available/web2.conf
Contenido del fichero:
<VirtualHost *:81>
DocumentRoot /var/www/web2/base
<Directory /var/www/web2/base>
Require all granted
</Directory>
</VirtualHost>
Guardar y salir:
- Ctrl + O
- Enter
- Ctrl + X
5.2 Activar el sitio web nº 2
sudo a2ensite web2.conf
sudo systemctl reload apache2
Se habilita el servidor web nº 2 mediante el comando a2ensite web2.conf y se recarga la configuración del servidor Apache con systemctl reload apache2, aplicando los cambios sin interrumpir el servicio.
5.3 Crear el contenido HTML de la Web nº 2 (fondo amarillo)
Página principal (index.html)
sudo nano /var/www/web2/base/index.html
Contenido:
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Web 2</title>
<style>
body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background: yellow;
}
h1 {
font-size: 60px;
text-align: center;
color: black;
font-family: Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Web Nº 2 no segura del alumno Clara</h1>
</body>
</html>
A continuación, guarda y sal del editor.
5.4 Crear los otros 4 HTML obligatorios (web 2)
Para ello, ejecuta el siguiente comando en la terminal:
for i in 2 3 4 5; do
echo "<html><body><h2>Pagina $i Web 2</h2></body></html>" | \
sudo tee /var/www/web2/base/pagina$i.html >/dev/null
done
Comprobamos que se han creado correctamente:
ls /var/www/web2/base
5.5 Verificación del servidor web nº 2
Ejecuta:
curl -I http://127.0.0.1:81
curl -I http://192.168.60.122:81
Resultado esperado
HTTP/1.1 200 OK
Con esto comprobamos el correcto funcionamiento del servidor web nº 2 mediante el comando curl -I, verificando la respuesta HTTP en el puerto 81 tanto desde la interfaz local como desde la dirección IP de la máquina virtual. La respuesta HTTP/1.1 200 OK confirma que el servidor web no seguro del puerto 81 se encuentra operativo.
5.6 Comprobación del acceso a la Web nº 2 desde el navegador
Acceso desde el navegador web
Abre Firefox (o el navegador que tengas en la máquina virtual) y escribe en la barra de direcciones:
http://192.168.60.122:81
- El :81 es obligatorio, porque esta web NO usa el puerto 80.
- No uses https, es una web NO segura.
FASE 6: SERVIDOR WEB Nº 3 (HTTPS - PUERTO 443)
En este caso el objetivo es configurar un servidor web seguro accesible mediante HTTPS en el puerto 443, utilizando un certificado autofirmado generado por el alumno, cumpliendo el enunciado de la práctica.
6.1 Activar el módulo SSL de Apache
Apache necesita el módulo SSL para poder usar HTTPS.
sudo a2enmod ssl
Aplicar el cambio
sudo systemctl restart apache2
Ya hemos habilitado el módulo SSL de Apache mediante el comando a2enmod ssl, permitiendo al servidor web gestionar conexiones seguras mediante el protocolo HTTPS. Posteriormente, se reinicia el servicio Apache para aplicar los cambios realizados.
6.2 Crear el certificado SSL autofirmado
Crear directorio de claves privadas
sudo mkdir -p /etc/ssl/private
Generar certificado y clave
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/web3.key \
-out /etc/ssl/certs/web3.crt
Durante el proceso:
- Puedes rellenar los campos o pulsar Enter en todos.
- Es un certificado autofirmado
Se genera un certificado digital autofirmado mediante OpenSSL, creando una clave privada y un certificado X.509 con una validez de 365 días. Este certificado se utiliza para habilitar el acceso seguro HTTPS al servidor web nº 3. Se ajustan los permisos de los ficheros para garantizar la seguridad de la clave privada.
A continuación, debemos ajustar los permisos
sudo chmod 700 /etc/ssl/private
sudo chmod 600 /etc/ssl/private/web3.key
sudo chmod 644 /etc/ssl/certs/web3.crt
Comprobación de permisos cambiados
ls -ld /etc/ssl/private
ls -l /etc/ssl/private/web3.key
ls -l /etc/ssl/certs/web3.crt
Con el objetivo de garantizar la seguridad del servidor web HTTPS, se configuran los permisos de los ficheros asociados al certificado digital.
El directorio /etc/ssl/private se establece con permisos 700, restringiendo el acceso exclusivamente al usuario root. La clave privada del certificado (web3.key) se configura con permisos 600, impidiendo su acceso por parte de usuarios no autorizados.
Al intentar acceder a la clave privada desde un usuario sin privilegios, el sistema devuelve un mensaje de “Permiso denegado”, lo que confirma que la clave se encuentra correctamente protegida.
El certificado público (web3.crt) se configura con permisos 644, permitiendo su lectura sin comprometer la seguridad del sistema.
6.3 Crear el VirtualHost HTTPS (web3)
Crear el fichero de configuración
sudo nano /etc/apache2/sites-available/web3-ssl.conf
Contenido
<VirtualHost *:443>
DocumentRoot /var/www/web3/base
<Directory /var/www/web3>
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/web3.crt
SSLCertificateKeyFile /etc/ssl/private/web3.key
</VirtualHost>
A continuación, guarda y sal del editor.
Ya hemos configurado un VirtualHost en el puerto 443 para el servidor web nº 3, habilitando el uso de HTTPS mediante SSL. Se asocia el certificado autofirmado generado previamente y se define el directorio raíz del sitio web seguro.
6.4 Activar el sitio web seguro
Comando
sudo a2ensite web3-ssl.conf
Aplicar cambios
sudo apachectl configtest
sudo systemctl restart apache2
Debe aparecer:
Syntax OK
De esta forma habilita el sitio web seguro mediante a2ensite y se comprueba la sintaxis de la configuración con apachectl configtest. Finalmente, se reinicia el servicio Apache para aplicar la configuración HTTPS.
6.5 Crear la página HTML de la Web nº 3 (verde)
Ejecuta:
sudo nano /var/www/web3/base/index.html
Contenido
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Web 3 Segura</title>
<style>
body{
margin:0;
display:flex;
justify-content:center;
align-items:center;
height:100vh;
background:green;
}
h1{
font-size:60px;
color:white;
text-align:center;
}
</style>
</head>
<body>
<h1>Web Nº 3 segura del alumno Clara</h1>
</body>
</html>
Guarda y sal del editor.
Ya hemos creado el fichero principal index.html del servidor web nº 3 mediante el editor de texto nano, definiendo una página web con fondo de color verde y texto centrado de gran tamaño, conforme a los requisitos establecidos en el enunciado de la práctica.
6.6 Creación de los ficheros HTML adicionales de la Web nº 3
El servidor web nº 3 debe disponer de cinco ficheros HTML en su directorio base.
Mediante un bucle for que ejecutaremos en la terminal, se generan automáticamente cuatro páginas HTML adicionales (pagina2.html a pagina5.html), complementando al fichero principal index.html.
for i in 2 3 4 5; do
echo "<html><body><h2>Pagina $i Web 3</h2></body></html>" | \
sudo tee /var/www/web3/base/pagina$i.html >/dev/null
done
Comprobamos que se hayan creado correctamente:
ls /var/www/web3/base
6.7 Verificación del servidor web seguro desde terminal
A continuación, vamos a comprobar que el servidor web nº 3 responde correctamente a peticiones HTTPS en el puerto 443.
Comando
curl -Ik https://127.0.0.1
Resultado esperado
HTTP/1.1 200 OK
Esto indica que el servidor HTTPS se encuentra operativo y responde correctamente a las peticiones seguras.
Se verifica el funcionamiento del servidor web seguro mediante el comando curl -Ik, realizando una petición HTTPS al puerto 443. La respuesta HTTP/1.1 200 OK confirma que el servidor web nº 3 está correctamente configurado y operativo.
6.8 Verificación del servidor web seguro desde el navegador
Comprueba el acceso real al servidor HTTPS desde un navegador web.
sudo nano /etc/apache2
Acceso desde el navegador
En la barra de direcciones del navegador, introducir:
https://192.168.60.122
Al tratarse de un certificado autofirmado, el navegador mostrará un aviso de seguridad.
Aceptación del certificado
- Pulsar Avanzado
- Aceptar el riesgo y continuar
Este comportamiento es normal y esperado en certificados autofirmados.
Si clicamos en “ver certificado”, podemos observar los datos del certificado digital autofirmado, como el emisor, el sujeto, el periodo de validez y el algoritmo de cifrado utilizado, comprobando que ha sido generado por el propio alumno y que corresponde al servidor web seguro configurado en esta práctica.
Se accede al servidor web nº 3 mediante un navegador web utilizando el protocolo HTTPS. Al emplearse un certificado autofirmado, el navegador muestra un aviso de seguridad que es aceptado manualmente. Tras ello, se visualiza correctamente la página web segura, confirmando el correcto funcionamiento del servidor HTTPS.
6.9 Verificación final de puertos en escucha
Una vez finalizada la configuración de los tres servidores web definidos en la práctica, se realiza una comprobación final de los puertos en los que el servidor Apache se encuentra escuchando.
Para ello, se ejecuta el siguiente comando:
sudo ss -ltnp | grep -E ':(80|81|443)\s'
El resultado muestra que Apache escucha correctamente en los puertos 80 y 81, correspondientes a los servidores web no seguros, así como en el puerto 443, correspondiente al servidor web seguro configurado mediante HTTPS. Esta verificación confirma la correcta implantación de la arquitectura web solicitada en el enunciado de la práctica.
INFORMACIÓN Y CONTENIDOS IMPORTANTES
1. JUSTIFICACIÓN DE LA ARQUITECTURA UTILIZADA
La arquitectura implementada en esta práctica se basa en el modelo cliente–servidor, utilizando una única máquina virtual con sistema operativo Linux Mint XFCE y el servidor web Apache. Sobre esta máquina se han configurado tres servidores web diferenciados, todos ellos alojados en el mismo sistema pero correctamente separados a nivel lógico.
La diferenciación entre los servidores web se realiza mediante el uso de VirtualHost por puerto, lo que permite a Apache gestionar múltiples servicios web de forma simultánea. Cada servidor dispone de su propio directorio de contenidos y se accede exclusivamente mediante dirección IP, sin utilización de servicio DNS, cumpliendo estrictamente las condiciones del enunciado.
Esta arquitectura permite optimizar recursos, simplificar la administración del servidor y demostrar el funcionamiento de Apache como servidor web multipuerto con distintos niveles de seguridad
2. DIFERENCIA ENTRE SERVIDORES, PUERTOS Y NIVELES DE SEGURIDAD
En esta práctica se han configurado tres servidores web diferenciados mediante el uso de distintos puertos de escucha y protocolos:
- El servidor web nº 1 utiliza el protocolo HTTP y escucha en el puerto 80, que es el puerto estándar para servicios web no seguros.
- El servidor web nº 2 utiliza también HTTP, pero escucha en el puerto 81, un puerto alternativo que permite alojar un segundo servidor web no seguro en la misma máquina sin conflicto con el puerto 80.
- El servidor web nº 3 utiliza el protocolo HTTPS y escucha en el puerto 443, el puerto estándar para comunicaciones web seguras, empleando cifrado SSL/TLS mediante un certificado digital autofirmado.
Desde el punto de vista de la seguridad, los servidores web nº 1 y nº 2 se consideran no seguros, ya que la información se transmite en texto plano, mientras que el servidor web nº 3 proporciona un canal de comunicación cifrado, garantizando un mayor nivel de protección de los datos.
3. DESCRIPCIÓN DE HTTP Y HTTPS
HTTP (HyperText Transfer Protocol) es un protocolo de comunicación web basado en el modelo petición–respuesta. Se trata de un protocolo sin estado y no cifrado, por lo que los datos transmitidos pueden ser interceptados. En esta práctica, HTTP se utiliza en los servidores web nº 1 y nº 2, adecuados para entornos de prueba o contenidos que no requieren confidencialidad.
HTTPS es la versión segura de HTTP. Utiliza el protocolo SSL/TLS para cifrar la comunicación entre cliente y servidor, garantizando la confidencialidad, integridad y autenticidad de los datos. En esta práctica se emplea HTTPS en el servidor web nº 3 mediante un certificado digital autofirmado, suficiente para entornos de laboratorio y aprendizaje.
4. RELACIÓN ENTRE PROTOCOLOS, PUERTOS Y FUNCIONAMIENTO DEL SERVIDOR APACHE
Apache asocia cada protocolo a un puerto de escucha específico, de modo que cuando recibe una petición entrante identifica el puerto de destino y dirige la solicitud al VirtualHost correspondiente. Este mecanismo permite que un único servidor Apache gestione múltiples servicios web diferenciados, utilizando distintos protocolos y niveles de seguridad sin interferencias.
Gracias a esta relación entre protocolos, puertos y VirtualHost, es posible alojar simultáneamente servidores web HTTP y HTTPS en la misma máquina virtual, garantizando su correcto funcionamiento y diferenciación.
CONCLUSIÓN
Con la realización de esta práctica se ha conseguido implantar y configurar correctamente un entorno web basado en Apache sobre una máquina virtual con Linux Mint XFCE. A lo largo del trabajo se han configurado tres servidores web distintos dentro del mismo sistema, diferenciados mediante el uso de distintos puertos y niveles de seguridad, cumpliendo todos los requisitos establecidos en el enunciado.
Durante el desarrollo de la práctica se ha podido comprobar el funcionamiento del servidor Apache como gestor de múltiples servicios web, así como la importancia de una correcta organización de directorios, permisos y ficheros de configuración. Además, se ha trabajado con los protocolos HTTP y HTTPS, entendiendo sus diferencias y la necesidad del uso de certificados digitales para garantizar comunicaciones seguras.