En este tema, aprenderemos cómo configurar SSL/TLS en NGINX para asegurar la comunicación entre el servidor y los clientes. SSL (Secure Sockets Layer) y TLS (Transport Layer Security) son protocolos que proporcionan seguridad en la transmisión de datos a través de redes.
Conceptos Clave
- Certificado SSL/TLS: Un archivo que contiene la clave pública y la identidad del servidor.
- Clave Privada: Un archivo que debe mantenerse seguro y nunca compartirse. Se utiliza para descifrar los datos cifrados con la clave pública.
- Certificado Intermedio: Certificados adicionales que forman una cadena de confianza entre el certificado del servidor y una autoridad de certificación (CA) raíz.
Pasos para Configurar SSL/TLS en NGINX
- Obtener Certificados SSL/TLS
Puedes obtener certificados SSL/TLS de una autoridad de certificación (CA) como Let's Encrypt, Comodo, o DigiCert. Para este ejemplo, usaremos Let's Encrypt.
Usando Certbot para Obtener Certificados
Certbot es una herramienta fácil de usar para obtener certificados SSL/TLS de Let's Encrypt.
Certbot configurará automáticamente NGINX para usar los certificados obtenidos.
- Configuración Manual de SSL/TLS en NGINX
Si prefieres configurar SSL/TLS manualmente, sigue estos pasos:
a. Instalar OpenSSL
b. Generar una Clave Privada y una Solicitud de Firma de Certificado (CSR)
openssl req -new -newkey rsa:2048 -nodes -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.csr
c. Enviar el CSR a una CA
Envía el archivo CSR a una CA para obtener el certificado SSL/TLS.
d. Configurar NGINX para Usar SSL/TLS
Edita el archivo de configuración de NGINX para incluir las directivas SSL/TLS.
server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { root /var/www/html; index index.html index.htm; } }
- Reiniciar NGINX
Después de configurar SSL/TLS, reinicia NGINX para aplicar los cambios.
Ejemplo Completo de Configuración
Aquí tienes un ejemplo completo de un archivo de configuración de NGINX con SSL/TLS habilitado:
server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { root /var/www/html; index index.html index.htm; } error_page 404 /404.html; location = /404.html { internal; } error_page 500 502 503 504 /50x.html; location = /50x.html { internal; } }
Ejercicio Práctico
Ejercicio 1: Configurar SSL/TLS en un Servidor NGINX
- Objetivo: Configurar SSL/TLS en un servidor NGINX utilizando Certbot.
- Pasos:
- Instala Certbot y el plugin de NGINX.
- Obtén un certificado SSL/TLS para tu dominio.
- Verifica que NGINX esté configurado correctamente y que el sitio sea accesible a través de HTTPS.
Solución
-
Instalar Certbot y el plugin de NGINX:
sudo apt-get update sudo apt-get install certbot python3-certbot-nginx
-
Obtener un certificado SSL/TLS:
sudo certbot --nginx
-
Verificar la configuración:
- Abre tu navegador y visita
https://example.com
. - Verifica que el sitio cargue correctamente y que el certificado SSL/TLS esté activo.
- Abre tu navegador y visita
Conclusión
En esta sección, hemos aprendido cómo configurar SSL/TLS en NGINX para asegurar la comunicación entre el servidor y los clientes. Hemos cubierto tanto la configuración automática usando Certbot como la configuración manual. Asegurarse de que las comunicaciones sean seguras es crucial para proteger la información sensible y mantener la confianza de los usuarios.
En el próximo tema, exploraremos cómo implementar prácticas básicas de seguridad en NGINX para fortalecer aún más la seguridad de nuestro servidor.
Curso de NGINX
Módulo 1: Introducción a NGINX
Módulo 2: NGINX como Servidor Web
- Sirviendo Contenido Estático
- Listados de Directorios
- Páginas de Error Personalizadas
- Registro y Formatos de Registro
Módulo 3: NGINX como Proxy Inverso
- Introducción al Proxy Inverso
- Configurando un Proxy Inverso
- Balanceo de Carga
- Verificaciones de Salud