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.
- 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.
- 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.
- 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.
- Exercicis Pràctics
Exercici 1: Generar un certificat auto-signat
- Genera una clau privada i un certificat auto-signat utilitzant
openssl
. - Configura NGINX per utilitzar aquest certificat.
Exercici 2: Configurar SSL/TLS amb Let's Encrypt
- Utilitza
certbot
per obtenir un certificat de Let's Encrypt. - 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
- 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.
Curs de NGINX
Mòdul 1: Introducció a NGINX
Mòdul 2: NGINX com a servidor web
- Servint contingut estàtic
- Llistats de directoris
- Pàgines d'error personalitzades
- Registre i formats de registre