Si vais a montar un servidor web en una Raspberry Pi o en cualquier otro ordenador (como una VPS), una de las cosas que vais a necesitar es un certificado SSL*.
El certificado SSL (Secure Sockets Layer) nos permite cifrar las comunicaciones entre el servidor y los usuarios, garantizando la seguridad y privacidad de los datos.
Además de la seguridad, nos permite usar protocolos como https
o http2
(estos requieren obligatoriamente un certificado SSL), que son mucho más rápidos y eficientes.
Es decir, que a día de hoy simplemente es imprescindible tener un certificado SSL. Si no, por ejemplo, los usuarios verán una advertencia al acceder a nuestras páginas web.
Afortunadamente, también tenemos opciones para generar certificados fácilmente y de forma gratuita.
Por ejemplo, hoy veremos cómo obtener e instalar un certificado SSL usando Let’s Encrypt, una autoridad de certificación gratuita y automatizada.
Prerequisitos
En primer lugar, vamos a asumir que tenéis un servidor web HTTP configurado. Es decir, tenéis lo siguiente:
- Domino comprado (en el tutorial le llamaré midominio.com)
- Servidor web correctamente configurado (ya sea Apache o Nginx)
El servidor debe estar funcionando, lógicamente en HTTP (no HTTPS aún) porque aún no tienes el certificado SSL.
Pero es necesario tener el servidor funcionando porque durante el proceso la utilidad de certificación va a comprobar que el dominio funciona correctamente.
En resumen, esto lo hace grabando un ficherito en el servidor, y comprobando que todo es correcto. Posteriormente borra y deja todo limpio.
Además, conviene que nuestro sistema esté actualizado. Para eso, ejecutamos los siguientes comandos.
sudo apt update
sudo apt upgrade
Instalar Certbot y el plugin
Certbot es la herramienta oficial de Let’s Encrypt para obtener certificados SSL. Dependiendo del servidor web que uses (Apache o Nginx), elige el comando correspondiente:
Para Apache:
sudo apt install certbot python3-certbot-apache
Para Nginx:
sudo apt install certbot python3-certbot-nginx
Obtener un certificado SSL
Con Certbot instalado, podemos obtener un certificado SSL. De nuevo, los comandos varían ligeramente según el servidor web que utilices.
Para Apache:
sudo certbot --apache -d midominio.com -d www.midominio.com
Para Nginx:
sudo certbot --nginx -d midominio.com -d www.midominio.com
El parámetro -d
especifica los dominios para los que deseas el certificado. Podemos añadir más dominios separados por espacio si es necesario
Es frecuente que, mínimo, generemos el certificado para el dominio con www y sin www
Durante el proceso, Certbot te pedirá algunas confirmaciones, como proporcionar una dirección de correo electrónico para notificaciones y aceptar los términos del servicio.
Certbot también te preguntará si deseas redirigir todo el tráfico a HTTPS. Es recomendable seleccionar esta opción para asegurar que todas las conexiones se realicen de forma segura.
Configurar la renovación automática del certificado
Los certificados Let’s Encrypt tienen una validez de 90 días. Para renovarlos automáticamente, Certbot instala un cron job o systemd timer que se ejecuta dos veces al día y renueva los certificados que estén por expirar.
Para probar la renovación automática, ejecuta:
sudo certbot renew --dry-run
Verificar la configuración
Después de la instalación, verifica que el certificado está correctamente configurado visitando https://midominio.com
en tu navegador.
Debes ver el candado de seguridad 🔒, indicando que el sitio está asegurado con HTTPS. ¡Enhorabuena!, ya tienes tu certificado SSL funcionando.