ASIR2 DOC 2025/26

Assignmets docs for asir2

View on GitHub

Apache TLS / PKI(Public Key Infrastructure)

Contexto

Autoridades certificadoras son las responsables de emitir certificados digitales para verificar identidades en internet (servidores, personas, conexiones). El uso de estos certificados permiten conexiones confiables, además de autenticidad y no repudio. TLS (Transport Layer Security) es un protocolo de seguridad basado en criptografía asimétrica que establece un canal seguro entre dos hosts

Objetivos

TLS (Transport Layer Security)

TLS es un protocolo de seguridad ampliamente usado diseñado para facilitar privacidad y seguridad en las comunicaciones a través de internet. El uso principal de TLS es encriptar comunicaciones entre el cliente y el servidor. HTTPS es una implementación de TLS que es usado por los servidores web y otras servicios web. Cualquier sitio que utilice HTTPS esta por lo tanto haciendo uso de TLS

Protocolos (Handshake)

TLS Protocol

Durante el handshake TLS el cliente y el servidor:

Hi, I’m your friend, and I want to start a secure conversation. Here are the languages I can speak (types of encryption I can use), and here are some secrets (keys) I’m willing to use to help us understand each other.”

To prove they are the rightful owner of the web site(and not an imposter), your friend shows you a badge (certificate) that a trusted authority has signed.

After checking the badge, you both agree on a special, private language (a shared secret) for your conversation. This final agreement on a shared secret solidifies your communication channel’s security.

Actividad

Guión esquemático

  1. Crear petición de certificado y enviar a la CA.
  2. Instalar el certificado raíz en nuestro sistema operativo.
  3. Crear, modificar y activar tu web site basándote en el fichero existente /etc/apache/sites-available/default-ssl.conf
  4. Configurar, probar y verificar mediante un navegador web

En esta práctica configuraremos nuestro servidor web (Apache) para establecer conexiones seguras mediante el protocolo HTTPS. El certificado digital que usaremos deberá estar firmado por una Autoridad Certificadora que crearemos y configuraremos.

Container creation and setup

Para simular un entorno más real, configuraremos nuestro contenedor de Apache con una ip del aula, para crearemos un bridge entre el interfaz virtual eth0 y nuestro interfaz real. Esto en incus es muy sencillo con el comando

$ incus network list
$ incus launch images:ubuntu/noble apache --network <interfaz_host> 

Note

Por defecto, la dirección ip la cogerá mediante dhcp de la gw del aula como si se tratase de un host más. Si necesitamos una ip static deberemos editar el fichero /etc/netplan/10-lxc.yaml

Crea la siguente estructura de directorios para tener nuestros certificados organizados

.
└── certs
    ├── csr
    ├── etc
    ├── private
    └── signed

La CA denominada pki comparte dos carpetas para que podamos enviarle nuestras peticiones de firma _requests_a y obtener los cetificados firmados issued. Ámbas carpetas se encuentran en la carpeta /home/ubuntu/pki/certs Accede a ellas de forma fácil mediante sshfs

$ sshfs -o allow_other,default_permissions ubuntu@ip:/home/ubuntu/pki/requests /home/ubuntu/certs/csr/
$ sshfs -o allow_other,default_permissions ubuntu@ip:/home/ubuntu/pki/issued /home/ubuntu/certs/signed/

Tip

Mejora la práctica y tu puntuación en ella haciendo los puntos de monaje persistentes, es decir que se creen cuando arranca el sistema.

Creación de certificados

Para habilitar las conexiones seguras TLS en tu servidor web, deberás obtener un certificado firmado por la CA de clase. Para ello debes crear una petición

Tip

Añade el la seccion alt_names un DNS a tu elección y la IP de tu server

username=<student-gva-username>
openssl req -new \
   	-config certs/etc/apache.$username.request.asir2.grao.conf \
   	-out certs/csr/apache.$username.asir2.grao.csr \
   	-keyout certs/private/apache.$username.asir2.grao.key

Responde:

  1. Explica la función de cada uno de los ficheros enumerados y utilizados en las prácticas
    • apache.$username.asir2.grao.key
    • apache.$username.asir2.request.grao.conf
    • apache.$username.asir2.grao.csr
    • apache.$username.asir2.grao.crt
    • apache.$username.asir2.grao.conf
    • root-ca.crt
  2. ¿Para que sirve la opción req?.
  3. ¿Para que sirve la opción keyout?.
  4. ¿Cuál es la finalidad del comando anterior?

Instalación del certificado raiz

Para llevar a cabo la el reconocimiento en nuestro S.O del certificado raiz ca-root.crt, deberemos copiar este en la carpeta /usr/local/share_ca-certificates/ y ejecutar el comando update-ca-certificates

Una vez creada la petición, notifica a la CA para que lleve a cabo la firma del certificado. Utiliza el comando openssl x509 -in <certificado> -noout -text para inspeccionar el certificado y responde:

  1. Explica qué es un certificado raiz y porqué es neceario instalarlo en nuestro S.O
  2. _¿Qué hace el comando update-ca-certificates?. ¿en que carpeta están los certificados del sistema?. Indica el comando para comprobar que el certificado raiz de clase esta instalado y reconocible por el S.O
  3. ¿Cuál es emisor del certificado?
  4. ¿Cuál es el identificador (SubjectKeyIdentifier) del certificado?
  5. ¿Cuál es el identificador del emisor del certificado?

Abre el certificado raiz root-ca.crt y comprueba que el identificador del certificado raiz coincide con el identificador del emisor de tu certificado. Explora el comando openssl x509 -in <certificado> -noout -ext subjectKeyIdentifier para obtener directamente el identificador.

  1. ¿Qué comando de openssl obtiene directamente el identificador del emisor?
  2. _¿Qué comandos has utilizado para comparar si id_issuer == cert_issuer_id?

Tip

Muchos ficheros de configuración incluyen comentarios anteponiendo el caracter '#'. En algunas ocasiones será necesario eliminar esos comentarios y líneas en blanco. Puedes usar el comando sed con las siguientes opciones.


sed -e '/^\s*#.*$/d' -e '/^\s*$/d' file
  1. Explica la finalidad usando lenguaje natural (nada de tecnicismos) la finalidad de las dos expresiones regulares usadas en el comando anterior

Configuración Apache2

Habilita las conexione SSL en tu servidor apache usando el certificado firmado

Warning

Es probable que sea necesario activar el modulo ssl con el comando a2enmod <nombre_modulo> para activar las conexiones seguras.

Entrega

Utiliza el formato markdown adecuado para tener un documento estructurado y legible.

Propuestas de mejora

Las siguientes propuestas de mejora de la práctica se plantean al alumno como reto para que mejore sus destrezas y conocimientos de las herramientas de administrdor de sistemas y mejore su nota en la asignatura.