Práctica 9: Implementación de sitios web sobre HTTPS#
Objetivos#
- Asignar un nombre de dominio DNS que apunte a la máquina virtual
- Instalar el servidor web Apache HTTPD y configurarlo para que responda a peticiones de HTTP y HTTPS
- Configurar VirtualHosts para HTTP y HTTPS
- Generar un certificado SSL con Let's Encrypt utilizando el cliente
certbot
Elementos de apoyo#
- Todos estos videos están en una lista de reproducción dedicada a los temas de HTTP y SSL 📹
- Protocolo DNS 📼
- Configuración de OpenSSH y autenticación con llaves 📼
- Configuración de Apache HTTPD en Debian 📼
- Directivas de configuración de Apache HTTPD 📼
- Configuración de VirtualHosts de Apache HTTPD 2.4 utilizando /etc/hosts 📼
- Configuración de VirtualHosts de Apache HTTPD 2.4 con registros DNS 📼
- Certificados SSL x509 📼
- Certificados SSL con OpenSSL y VirtualHost HTTPS en Apache HTTPD 📼
- Trámite de un certificado SSL con Let's Encrypt utilizando certbot 📼
Páginas de manual de Apache HTTPD
Restricciones#
- La fecha límite de entrega es el jueves 11 de mayo de 2023 a las 23:59 horas
- Esta actividad debe ser entregada en equipo de acuerdo al flujo de trabajo para la entrega de tareas y prácticas
- Utilizar la carpeta
docs/practicas/practica-9/Equipo-ABCD-EFGH-IJKL-MNOP
para entregar la práctica- Donde
Equipo-ABCD-EFGH-IJKL-MNOP
representa el nombre del equipo que debió anotarse previamente en la lista del grupo
- Donde
- Hacer un merge request a la rama
practica-9
del repositorio de tareas para entregar la actividad
- Utilizar la carpeta
Danger
- Esta actividad depende de los recursos implementados en la práctica 8
- Se recomienda que se realice esta actividad siguiendo la calendarización con el objeto de dejar suficiente tiempo para la elaboración de las siguientes actividades
Procedimiento#
-
Configura el módulo SSL y tramita el certificado SSL válido con Let's Encrypt
-
Valida la configuración, junta los archivos entregables y genera tu reporte
Note
Si tienes problemas ejecutando certbot
en la máquina remota, puedes intentar hacer el trámite del certificado SSL utilizando certbot
en otra máquina
Entregables#
-
Archivo
README.md
- Anotar el nombre de dominio que se registró y la dirección IP pública de la máquina virtual
- Explicación del procedimiento que se siguió para crear los nombres DNS en Azure
- Explicación de los comandos utilizados para instalar el servicio de Apache HTTPD y tramitar el certificado SSL
- Explicar la función de los scripts
consulta-dns.sh
,consulta-http.sh
yconsulta-ssl.sh
- Salida de las consultas DNS para los registros
TXT
,A
yCNAME
- Salida de las consultas HTTP para los sitios hospedados en el equipo
- Salida de las consultas SSL para los sitios hospedados en el equipo
-
Carpeta
img
- Capturas de pantalla donde se muestren los recursos creados en Azure (registros DNS)
- Capturas de pantalla donde se muestre la página inicial de cada sitio hospedado en el servidor
- Cada captura de pantalla tiene que ser referenciada en el archivo
README.md
-
Carpeta
files
-
Archivos de configuración
- Copia de seguridad de la configuración de Apache HTTPD en el directorio
/etc/apache2
root@example:~# tar -cvvf apache2.tar -C /etc/apache2 ./
- Archivo
/etc/apache2/conf-available/security.conf
con comentarios que expliquen la funcionalidad de las directivas utilizadas
- Copia de seguridad de la configuración de Apache HTTPD en el directorio
-
Archivos de bitácora
-
Archivo
salida-mkdocs.log
obtenido al convertir los archivos Markdown a HTML conmkdocs
-
Copia de seguridad de las bitácoras de Apache HTTPD
root@example:~# tar -cvvzpf apache2-logs.tar.gz /var/log/apache2
-
-
Archivos de datos
- Archivo
virtualhosts.txt
con el listado de VirtualHosts en la configuración de Apache HTTPD
root@example:~# apachectl -S 2>&1 | tee virtualhosts.txt
- Copia de seguridad del directorio
/var/www
root@example:~# tar -cvvf www.tar -C /var/www .
- Copia de seguridad de los datos generados por
certbot
root@example:~# tar -cvvf letsencrypt.tar /etc/letsencrypt /var/lib/letsencrypt /var/log/letsencrypt
- Archivo
-
Danger
- Los directorios de Let's Encrypt en
/etc
contienen información sensible (la llave privada del servidor) - Normalmente esto se tiene que respaldar en otro medio que no sea público en Internet, pero se pide de esta manera únicamente para propósitos de la evaluación de esta práctica
- Archivo de datos
registros-dns.txt
donde vengan las consultas de todos los nombres DNS que generaste
Nombre | Tipo | Valor |
---|---|---|
_acme-challenge.example.com. |
TXT |
Valor que pidió Let's Encrypt |
example.com. |
A |
20.213.120.169 |
docs.example.com. |
A |
20.213.120.169 |
kernel.example.com. |
A |
20.213.120.169 |
sitio.example.com. |
CNAME |
example.com. |
tareas.example.com. |
CNAME |
sitio.example.com. |
Consulta DNS
Puedes generar este archivo ejecutando el script de shell consulta-dns.sh
usuario@laptop ~ % chmod +x consulta-dns.sh
usuario@laptop ~ % ./consulta-dns.sh example.com 2>&1 | tee registros-dns.txt
...
- Archivo de datos con el diagnóstico de consultas HTTP y HTTPS a la dirección IP y nombres DNS de los VirtualHosts
Consulta HTTP
Puedes generar este archivo ejecutando el script de shell consulta-http.sh
usuario@laptop ~ % chmod +x consulta-http.sh
usuario@laptop ~ % ./consulta-http.sh example.com 2>&1 | tee diagnostico-http.txt
...
- Archivo de datos con el diagnóstico de certificados SSL que regresa cada VirtualHost configurado
Consulta SSL
Puedes generar este archivo ejecutando el script de shell consulta-ssl.sh
usuario@laptop ~ % chmod -c +x consulta-ssl.sh
usuario@laptop ~ % ./consulta-ssl.sh example.com 2>&1 | tee diagnostico-ssl.txt
...