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
serverredirigeix 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
certbotper 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
