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#

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
    • Hacer un merge request a la rama practica-9 del repositorio de tareas para entregar la actividad

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#

  1. Instala y configura Apache HTTPD en tu máquina virtual

  2. Configura el módulo SSL y tramita el certificado SSL válido con Let's Encrypt

  3. Configura los VirtualHosts en tu máquina virtual

  4. 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 y consulta-ssl.sh
    • Salida de las consultas DNS para los registros TXT, A y CNAME
    • 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
    • Archivos de bitácora

      • Archivo salida-mkdocs.log obtenido al convertir los archivos Markdown a HTML con mkdocs

      • 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

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
    ...