Configura tu SSL con Nginx, certbot y LetsEncrypt
En el mundo actual (2024) ya es muy raro que te ocurre esto que te voy a contar ya que la mayoría de los proveedores de hosting (como Dinahosting u OVH) ya integran los servicios SSL en todos los sitios web (o deberían!)
Otro caso es el que te montes tu sitio web en tu propio servidor entonces esto sí que te interesa básicamente ya que sin el probablemente ya los buscadores ni te indexen o te pongan muchas pegas de seguridad (normal también eh!)
Como podrás ver en este sitio no te voy a aburrir con definiciones largas y copiadas de Wikipedia sobre qué es SSL y la importancia. Vamos al lío!
Básicamente tener un sitio con SSL implica que tendrás que acceder a el mediante https. Esto te dice que tu la comunicación entre cliente - servidor de tu sitio está cifrada y por lo tanto los atacantes lo tendrán algo más complicado para intentar obtener información.
Cómo funciona?, un SSL es un certificado, un fichero a modo de clave el cual se usa para cifrar y descrifar los paquetes de información.
Hoy en día los buscadores ya casi obligan que tengas todas las URLs con https. De echo si tienes contenido mixto (http y https), los recursos http no te los carga para evitar tener problemas de seguridad
Para montar tu SSL en tu sitio web vamos a usar Nginx con servidor web y LetsEncrypt como autoridad certificadora. Este tipo de certificado SSL es gratis y seguro. Y dirás, gratis y seguro? pues si!!! la principal diferente con respeto a otras entidades certificadoras como NameCheap es que estas últimas suelen tener algún tipo de cifrado más complejo, más funcionalidades e hasta incluso una garantía/seguro ante ataques.
Puedes generar tu certificado de forma manual lo cual es algo engorroso y tienes que andar a vueltas con el comando openssl y demás cosas. Vamos hacerlo más sencillo con CertBot. Este es un comando para gestionar y configurar certificados SSL de una forma muuuuuuy sencilla! Para hacerlo en un entorno Linux con Nginx debes:
- Tener instalado Certbot claramente. También debes instalar la extensión de Nginx para que sea compatible. Podrás hacerlo con este comando por ejemplo:
sudo apt install certbot python3-certbot-nginx
- Tenemos en cuenta que ya tienes tu sitio web montado y funcionando con Nginx
- Crea y asigna un certificado SSL a tu sitio web con Certbot. Usa ese comando como base:
sudo certbot --nginx -d tudominio.com -d www.tudominio.com
- Te generará el certificado y al final te preguntará cómo quieres gestionar la instalación y la redirección. Tienes 2 opciones:
- Que te redirija todo el tráfico de HTTP (puerto 80) a HTTPS (puerto 443) de forma automática
- Tener las dos opciones si redirección. Esta opción o es recomendable pero bueno en algunos casos igual te compensa
- Listo!
Lo bueno que tiene usar certbot es que ya te configura automáticamente las especificaciones de tu sitio en Nginx. Sería la evolución o lo que le falta a lo que te comentaba aquí sobre tu sitio en Nginx
OJO!
Los certificados de LetsEncrypt caducan a los 3 meses. Tienes la opción de renovarlos cuantas veces quieras por lo que lo puedes automatizar y no estar pendiente :D
Cómo lo haces?, una opción sería incluir esta línea den el crontab de tu servidor con un usuario root para indicarle que todos los días checkee y renueve los certificados necesarios (la opción --quiet es para que no escupa mucha información de registro)
00 12 * * * /usr/bin/certbot renew --quiet
Update
También es importante saber cómo eliminar un certificado de tu servidor de forma segura para no tenerlo por ahí jugando!
Con este comando te cargas el certificado
sudo certbot delete --cert-name NOMBRE_DOMINIO