En aquest tema, aprendrem com configurar SSL/TLS a NGINX per assegurar les comunicacions entre el servidor i els clients. SSL (Secure Sockets Layer) i el seu successor TLS (Transport Layer Security) són protocols que proporcionen seguretat en les comunicacions a través d'Internet.

  1. Introducció a SSL/TLS

Què és SSL/TLS?

  • SSL/TLS: Protocols de seguretat que xifren les dades transmeses entre el client i el servidor.
  • Certificat SSL/TLS: Un fitxer que conté la clau pública del servidor i altres dades d'identificació. És emès per una Autoritat de Certificació (CA).

Beneficis de SSL/TLS

  • Confidencialitat: Les dades transmeses són xifrades.
  • Integritat: Les dades no poden ser modificades sense ser detectades.
  • Autenticació: Assegura que el servidor és qui diu ser.

  1. Obtenint un Certificat SSL/TLS

Opcions per obtenir un certificat

  • Certificats auto-signats: Generats pel propi servidor, adequats per a entorns de desenvolupament.
  • Certificats de CA: Emesos per una Autoritat de Certificació, adequats per a entorns de producció.

Generant un certificat auto-signat

# Generar una clau privada
openssl genpkey -algorithm RSA -out server.key

# Generar un certificat auto-signat
openssl req -new -x509 -key server.key -out server.crt -days 365

Obtenint un certificat de CA

  • Let's Encrypt: Una CA gratuïta que proporciona certificats SSL/TLS.
  • Altres CA: Com DigiCert, GlobalSign, etc.

  1. Configurant SSL/TLS a NGINX

Estructura de la configuració

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/server.crt;
    ssl_certificate_key /path/to/server.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}

Explicació de la configuració

  • listen 443 ssl;: Indica que el servidor escoltarà al port 443 amb SSL habilitat.
  • server_name example.com;: El nom del servidor.
  • ssl_certificate: Ruta al certificat SSL.
  • ssl_certificate_key: Ruta a la clau privada del certificat.
  • ssl_protocols: Protocols TLS que es permeten.
  • ssl_ciphers: Conjunts de xifrat que es permeten.

Exemple complet

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}

server {
    listen 80;
    server_name example.com;

    location / {
        return 301 https://$host$request_uri;
    }
}

Explicació addicional

  • Redirecció HTTP a HTTPS: El segon bloc server redirigeix tot el tràfic HTTP a HTTPS per assegurar que totes les comunicacions siguin segures.

  1. Exercicis Pràctics

Exercici 1: Generar un certificat auto-signat

  1. Genera una clau privada i un certificat auto-signat utilitzant openssl.
  2. Configura NGINX per utilitzar aquest certificat.

Exercici 2: Configurar SSL/TLS amb Let's Encrypt

  1. Utilitza certbot per obtenir un certificat de Let's Encrypt.
  2. Configura NGINX per utilitzar el certificat obtingut.

Solucions

Solució Exercici 1

# Generar una clau privada
openssl genpkey -algorithm RSA -out /etc/nginx/ssl/server.key

# Generar un certificat auto-signat
openssl req -new -x509 -key /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.crt -days 365

Solució Exercici 2

# Instal·lar certbot
sudo apt-get install certbot python3-certbot-nginx

# Obtenir un certificat de Let's Encrypt
sudo certbot --nginx -d example.com

  1. Errors Comuns i Consells

Errors Comuns

  • Certificat invàlid: Assegura't que el certificat i la clau privada coincideixen.
  • Protocols no suportats: Verifica que el client i el servidor suporten els mateixos protocols TLS.

Consells

  • Renovació automàtica: Configura la renovació automàtica dels certificats de Let's Encrypt.
  • Seguretat: Utilitza conjunts de xifrat forts i desactiva protocols obsolets.

Conclusió

En aquesta secció, hem après com configurar SSL/TLS a NGINX per assegurar les comunicacions. Hem vist com obtenir certificats, tant auto-signats com de CA, i com configurar-los a NGINX. També hem practicat amb exercicis per reforçar els conceptes apresos. En el següent tema, explorarem la caché a NGINX per millorar el rendiment del servidor.

© Copyright 2024. Tots els drets reservats