Laboratorio de Configuración de TLS/SSL
Objetivos:
Configurar un servidor web Apache o Nginx con TLS/SSL.
Verificar la configuración utilizando herramientas como SSL Labs.
Herramientas
Máquina Virtual con Ubuntu 24.04 LTS.
Servidor Web Nginx.
Certificado SSL autofirmado.
Procedimiento
1. Instalación de Nginx
Para instalar Nginx en Ubuntu 24.04, primero actualizamos el índice de paquetes y luego instalamos el paquete de Nginx.
sudo apt update
sudo apt install nginx
Podemos conectarnos por SSH a la máquina virtual para ejecutar los comandos.
ssh usuario@direccion_ip
Para verificar que Nginx se ha instalado correctamente, podemos ejecutar el siguiente comando:
sudo systemctl status nginx
2. Configuración de Nginx
Verificamos los sitios disponibles con nginx:
ls /etc/nginx/sites-available/
Analizamos el archivo de configuración por defecto:
cat /etc/nginx/sites-available/default
Creamos un directorio llamado example para un nuevo sitio en nuestro servidor nginx:
sudo mkdir /var/www/example
Le brindamos permisos de nuestro usuario al diretorio:
sudo chown -R $USER:$USER /var/www/example
Tambien le asignamos los siguientes permisos:
sudo chmod -R 755 /var/www/example
Con ello podemos crear un archivo index.html en el directorio example:
nano /var/www/example/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
</body>
</html>
Nos movemos a los sitios disponibles de nginx:
cd /etc/nginx/sites-available/
Copiamos el archivo de configuración por defecto y le asignamos el nombre example:
sudo cp default example
Verificamos con un ls que se haya creado el archivo:
ls
Vamos a modificar el archivo example que acabamos de crear:
sudo nano example
server {
listen 80;[::]:80;
listen
root /var/www/example;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Guardamos y cerramos el archivo.
Creamos un enlace simbólico en la carpeta sites-enabled para habilitar el sitio:
sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/
Verificamos la configuración de Nginx:
sudo nginx -t
Si todo salio bien deberíamos ver un mensaje como el siguiente:
nginx: configuration file /etc/nginx/nginx.conf test is successful
Reiniciamos el servicio de Nginx:
sudo systemctl restart nginx
Antes de proceder con la instalación del certificado SSL, verificamos que el sitio web esté funcionando correctamente. Para ello, abrimos un navegador web y accedemos a la dirección IP de la máquina virtual.
Podemos configurar el dominio en nuestro archivo hosts para acceder al sitio web con un nombre de dominio en lugar de la dirección IP. Para ello, agregamos una entrada en el archivo /etc/hosts de la máquina cliente.
sudo nano /etc/hosts
Agregamos la siguiente línea:
127.0.1.1 ubuntu example.com
Guardamos y cerramos el archivo.
Volvemos a reiniciar el servidor Nginx:
sudo systemctl restart nginx
Mediante el navegador web, accedemos al sitio web utilizando el nombre de dominio que configuramos en el archivo hosts.
Si todo salio bien deberíamos ver el mensaje que configuramos en el archivo index.html.
3. Configuración de TLS/SSL
Para empezar esta sección vamos a crear una carpeta para almacenar los certificados SSL:
sudo mkdir /etc/nginx/ssl
Le damos permisos al directorio que acabamos de crear:
sudo chmod 700 /etc/nginx/ssl
Ahora vamos a generar con openssl el fichero de certificado y la clave privada:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
El comando anterior generará un certificado autofirmado válido por 365 días. Se le pedirá que proporcione información sobre su organización y ubicación. Puede completar esta información o dejarla en blanco.
Comprobamos que los archivos se hayan generado correctamente:
ls /etc/nginx/ssl
Ahora volvemos a nuestros sitios disponibles de nginx:
cd /etc/nginx/sites-available/
Vamos a modificar el archivo de configuración del sitio para habilitar TLS/SSL:
sudo nano example
server {
listen 80;[::]:80;
listen
root /var/www/example;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/nginx/ssl/nginx.crt; # managed by Certbot
ssl_certificate_key /etc/nginx/ssl/nginx.key; # managed by Certbot
}
Guardamos y cerramos el archivo.
Recargarmos el servidor Nginx:
sudo systemctl reload nginx
Se recomienda en este punto reiniciar la m´quina virtual para asegurarnos de que los cambios se apliquen correctamente.
Si todo salio bien deberíamos poder acceder al sitio web mediante HTTPS.
4. Verificación de la Configuración de TLS/SSL
Para verificar la configuración de TLS/SSL, podemos utilizar la herramienta SSL Labs. Para ello, abrimos un navegador web y accedemos a la siguiente URL https://www.ssllabs.com/ssltest/
En el campo de texto, ingresamos la URL de nuestro sitio web y hacemos clic en el botón “Submit”.
La herramienta SSL Labs analizará la configuración de TLS/SSL de nuestro sitio web y nos proporcionará un informe detallado con una calificación.
Es posible que la calificación no sea la máxima si estamos utilizando un certificado autofirmado. Sin embargo, el informe proporcionará información útil sobre la configuración de TLS/SSL de nuestro sitio web.
Conclusión
En este laboratorio, hemos configurado un servidor web Nginx con TLS/SSL en una máquina virtual Ubuntu 24.04. Hemos creado un certificado SSL autofirmado y hemos verificado la configuración utilizando la herramienta SSL Labs.