DAW_M08_UF1
1. Documentación de instalación de Apache
1.1. Actualizar repositorios
Antes de instalar cualquier paquete en tu sistema Linux (por ejemplo, Ubuntu/Debian), conviene asegurarnos de tener los repositorios actualizados:
1.2. Instalar Apache
Instala el servidor web Apache:
1.3. Iniciar y habilitar el servicio
Asegúrate de que el servicio Apache esté en ejecución y configurado para iniciarse automáticamente al arrancar el sistema:
1.4. Verificar el estado
Para verificar que el servicio se ha iniciado correctamente:
Si todo está bien, deberías ver un mensaje indicando que el servicio está “active (running)”.
1.5. Probar la instalación
Abre un navegador y accede a http://<IP-o-Hostname-de-tu-servidor>/. Debería aparecer la página por defecto de Apache (normalmente el mensaje “It works!” en caso de Debian/Ubuntu).
2. Creación y configuración de los Virtual Hosts
2.1. Estructura de directorios
Para organizar los archivos web de cada dominio, se suelen crear directorios separados dentro de /var/www/. En este ejemplo, creamos:
El directorio dominio1.com/public_html/ contendrá la web de dominio1.com
El directorio dominio2.com/public_html/ contendrá la web de dominio2.com
2.2. Asignar permisos
Asegúrate de que Apache tenga acceso de lectura (y escritura si fuera necesario) a estos directorios. Por simplicidad, otorgaremos permisos adecuados al propietario “www-data”
2.3. Los archivos index.html para cada dominio
2.3.1. index.html para dominio1.com
/var/www/dominio1.com/public_html/index.html
2.3.2. index.html para dominio2.com
/var/www/dominio2.com/public_html/index.html
3. Contenido del fichero de configuración del host virtual dominio1.com
En Ubuntu/Debian, los archivos de configuración de virtual hosts se suelen ubicar en /etc/apache2/sites-available/. Crearemos un archivo de configuración llamado dominio1.com.conf (o dominio1.conf, como prefieras).
3.1. Ejemplo de configuración (dominio1.com.conf)
/etc/apache2/sites-available/dominio1.com.conf
3.2. Explicación de los parámetros (dominio1.com.conf)
<VirtualHost *:80>
Indica que este bloque de configuración corresponde a peticiones en el puerto 80 (HTTP) dirigidas a todas las interfaces.ServerName dominio1.com
Define el nombre principal del dominio que se está configurando.ServerAlias www.dominio1.com
Especifica nombres adicionales que deberán apuntar a este mismo Virtual Host, en caso de requerirlo.DocumentRoot /var/www/dominio1.com/public_html
Indica la carpeta en la cual se encuentra la web de dominio1.com.<Directory /var/www/dominio1.com/public_html>
Bloque de configuración específico para la carpeta public_html.Options -Indexes +FollowSymLinks: desactiva la visualización de índices de directorios y permite seguir enlaces simbólicos.
AllowOverride All: permite que los archivos .htaccess sobrescriban la configuración.
Require all granted: habilita el acceso a todos los clientes.
ErrorLog / CustomLog
Indican los archivos de registro de errores y de accesos, respectivamente.
4. Contenido del fichero de configuración del host virtual dominio2.com
Ahora necesitamos que dominio2.com funcione tanto en puerto 80 (HTTP) como en puerto 443 (HTTPS). Para ello, usualmente se crean dos bloques VirtualHost, uno para el puerto 80 y otro para el 443.
4.1. Ejemplo de configuración (dominio2.com.conf)
/etc/apache2/sites-available/dominio2.com.conf
4.2. Explicación de los parámetros
*<VirtualHost :80>
Configura el Virtual Host para el tráfico HTTP en el puerto 80.ServerName y ServerAlias
Igual que con dominio1, definen los nombres asociados a este Virtual Host.DocumentRoot
Directorio raíz donde se aloja la web de dominio2.Redirección a HTTPS (opcional)
Dentro del bloque de puerto 80, se puede añadir una regla de reescritura para forzar a que todo el tráfico HTTP se redirija a HTTPS. Se hace con RewriteEngine on, RewriteCond, y RewriteRule.
Nota: para usar estas directivas, se requiere habilitar el módulo mod_rewrite:
*<VirtualHost :443>
Configura el Virtual Host para el tráfico HTTPS en el puerto 443.SSLEngine on
Activa la encriptación SSL.SSLCertificateFile y SSLCertificateKeyFile
Rutas al certificado SSL y su clave privada correspondientes a dominio2.com.SSLCertificateChainFile (Opcional)
Si tu certificado SSL tiene una cadena de autoridad intermedia (CA Bundle), se debe especificar aquí.
Importante: Para que funcione la conexión HTTPS, es necesario habilitar el módulo SSL y cargar la configuración SSL de Apache. En Ubuntu/Debian se realiza con:
Si restart da error en este punto, seguramente será que no hay certificado openssl
4.3. Generación del certificado openssl
Para crear un certificado autofirmado (self-signed) a mano, paso a paso con estos comandos y rellenar la información que te solicite OpenSSL en cada paso:
Esto genera una clave privada RSA de 2048 bits y la guarda en el archivo dominio2.key.
Con la clave privada dominio2.key generamos una solicitud de certificado. Durante este proceso, OpenSSL te pedirá que introduzcas datos como país, organización, etc.
Cuando te solicite Common Name (CN), debes poner el nombre de dominio que quieres proteger (en este caso, dominio2.com).
El resto de valores (Country Name, State, Organization, etc.) puedes rellenarlos como quieras; para una prueba local no es crítico, pero conviene rellenarlos lógicamente.
Resultado:
dominio2.csr: archivo de “solicitud” que contiene la información necesaria para que una Autoridad de Certificación (CA) firme tu certificado. En nuestro caso, la CA seremos nosotros mismos (“autofirmado”).
Ahora convertimos la dominio2.csr en un certificado autofirmado, indicando una validez (por ejemplo, 365 días). Usaremos la misma clave privada para firmarlo.
-days 365: fija la validez del certificado a 365 días.
-in dominio2.csr: la CSR que acabamos de generar.
-signkey dominio2.key: utilizamos nuestra clave privada para autofirmar.
-out dominio2.crt: el archivo de certificado resultante.
Tras este paso, obtendrás un archivo dominio2.crt que es el certificado propiamente dicho.
4.4. Mover los archivos openssl a las rutas correctas y seguridad
Por convención y como hemos configurado en este trabajo, en la mayoría de distribuciones Linux (Debian/Ubuntu):
Clave privada suele ir en /etc/ssl/private/
Certificado en /etc/ssl/certs/
Opcionalmente, puedes cambiar los permisos para reforzar la seguridad de la clave privada (solo lectura por root y propietario “root”):
Como se trata de un certificado autofirmado, el navegador generalmente te mostrará una advertencia indicando que el certificado no fue emitido por una entidad de confianza. Aun así, podrás acceder de forma cifrada (HTTPS).
Para uso en producción es recomendable usar un certificado emitido por una CA de confianza (por ejemplo, Let’s Encrypt). Pero para pruebas internas, el certificado autofirmado sirve perfectamente.
4.5. Asegúrate de tener las rutas correctas en (domnio2.com.conf)
/etc/apache2/sites-available/dominio2.com.conf
<VirtualHost *:443>
ServerName dominio2.com
DocumentRoot /var/www/dominio2.com/public_html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/dominio2.crt
SSLCertificateKeyFile /etc/ssl/private/dominio2.key
...
Reinicia Apache para aplicar los cambios.
5. Activar los sitios y reiniciar Apache
Habilita los sitios:
Reinicia Apache:
Si el dominio1.com resuelve con otra pagina web, revisa los hosts:
Revisa tu ip → ifconfig
Editar y añade las siguientes líneas a /etc/hosts → sudo nano /etc/hosts
<IP-de-tu-servidor> dominio1.com
<IP-de-tu-servidor> dominio2.com
Ejemplo: 192.168.1.100 dominio1.com
Guarda el archivo y cierra el editor.
Ahora, cuando abras un navegador en ese equipo y visites http://dominio1.com, el sistema resolverá dominio1.com a la IP indicada (en este ejemplo, 192.168.1.100).
6. Capturas de pantalla
Captura de http://dominio1.com
Captura de http://dominio2.com
Captura de https://dominio2.com
0 comentarios
Publicar un comentario
Suscribirse a Enviar comentarios [Atom]
« Inicio