Let’s Encrypt en tu VPS

Este es uno de los capítulos del tutorial Servidor virtual. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.

En el artículo anterior sobre tus primeros pasos con tu VPS, dejamos nuestro VPS segurizado y a punto de caramelo. Sin embargo, y aunque no es algo obligatorio, creo que es muy interesante tener un dominio y un certificado SSL, y en particular utilizar Let’s Encrypt en tu VPS. La razón de no haberlo puesto en el capítulo anterior de este tutorial, es precisamente por el hecho de no ser algo necesario.

Que nuestro VPS tenga un certificado SSL, está claramente motivado por razones de seguridad. El certificado SSL se utiliza para cifrar el tráfico entre cliente y servidor, de forma que los usuarios de tu servicio tendrán un extra de seguridad. Por supuesto que podemos optar por diferentes tipos de certificado SSL, desde un certificado autofirmado, hasta un certificado de pago, por supuesto, pasando por utilizar Let’s Encrypt en tu VPS.

¿Pero en que nos beneficia un dominio? Si en tu VPS vas a alojar tu página web, ya no tenemos mas que hablar. Es evidente que en este caso necesitas un dominio. Pero ¿en otros casos?. Pues en otros casos, nos interesa tener un dominio por dos razones. La primera de las razones para tener un dominio es la comodidad, porque sin lugar a dudas es mas fácil acceder a nuestro VPS mediante un dominio que mediante una IP. La segunda de las razones es por seguridad, por que necesitamos tener un dominio para tener un certificado de Let’s Encrypt. Bien es cierto, que podríamos instalar un certificado autofirmado, sin embargo, en el caso de una página web o cualquier otro servicio, esto seguiría mostrándose como conexión insegura.

Certificado Let's Encrypt en tu VPS

¿Que es Let’s Encrypt y en que te beneficia utilizar Let’s Encrypt en tu VPS?

Let’s Encrypt es una entidad certificadora que ofrece certificados SSL abiertos, libres, gratuitos y automáticos. Se trata de un proyecto impulsado por la Fundación Linux.

Las ventajas de utilizar un certificado SSL, son las siguientes,

  • Se añade una capa extra de seguridad a tu WEB
  • No disponer de un certificado SSL empeora el posicionamiento SEO.
  • Es un punto de confianza en los usuarios.
  • Permite habilitar HTTP/2

Por otro lado las ventajas de los certificados de Let’s Encrypt, son las siguientes,

  • Son gratuitos y proporcionan exactamente la misma protección que un certificado de pago.
  • Está admitida por los diferentes navegadores.
  • Son muy sencillas y rápidas de instalar
  • Se renuevan de forma automática, sin que sea necesario que nos preocupemos de nada.

Instalar el cliente de Let’s Encrypt

Como verás a continuación, la instalación, uso y mantenimiento de un cliente de Let’s Encrypt en tu VPS es algo realmente sencillo. Al final, son tres sencillos pasos. El primer paso es descargar el cliente de Let’s Encrypt para tu VPS.

Añadir el repositorio

Los desarrolladores de Certbot, el cliente de Let’s Encrypt, mantienen su propio repositorio en Ubuntu con versiones actualizadas de este software. Dado que el cliente Certbot, está siempre en desarrollo, es imprescindible utilizar este repositorio para tener siempre la última versión del cliente.

Para añadir el repositorio, e instalar el cliente Certbot, tan solo tenemos que ejecutar la siguientes órdenes en un terminal,

sudo add-apt-repository ppa:certbot/certbot
sudo apt update

Para el caso de que tu servidor web sea Apache, deberás ejecutar,

sudo apt install python-certbot-apache

Mientras que si tu servidor web es Nginx, la orden a ejecutar es,

sudo apt install python-certbot-nginx

Si estás utilizando la versión 18.04 o superior no es necesario que actualices, es decir, que ejecutes sudo apt update. Esto es así, por que en la última versión de add-apt-repository, en el momento de añadir el repositorio ya se hace la actualización de forma automática.

Una vez añadido el repositorio e instalado el cliente Certbot de Let’s Encrypt en tu VPS, ya podemos utilizarlo.

Configurando el certificado SSL

De nuevo, como verás generar el certificado Let’s Encrypt en tu VPS para Apache es realmente sencillo. El cliente Certbot, obtendrá e instalará un nuevo certificado SSL, de forma totalmente automática, y que será válido para los dominios que le hallas indicado en la ejecución del cliente Certbot. Así, para obtener el certificado Let’s Encrypt para el dominio midominio.es, tienes que ejecutar la siguiente orden en un terminal

En el caso del servidor Apache

sudo certbot --apache -d midominio.es

En el caso del servidor Nginx

sudo certbot --nginx -d midominio.es

De esta manera habrás obtenido e instalado el certificado solo para el dominio midominio.es. Pero, ¿que pasa si quieres instalar un único certificado que sea válido para multiples dominios o subdominios? En este caso debes pasar estos dominios adicionales como parámetros. El primer dominio de la lista, será utilizado como el dominio base utilizado por Let’s Encrypt para crear el certificado. Por esta razón es recomendable que pases como dominio base, el dominio mas alto, seguido del resto de dominios. Por ejemplo, midominio.es es el dominio base,

En el caso del servidor Apache

sudo certbot --apache -d midominio.es -d www.dominio.es -d blog.dominio.es

En el caso del servidor Nginx

sudo certbot --nginx -d midominio.es -d www.dominio.es -d blog.dominio.es

Durante el proceso de generación del certificado SSL, tendrás que tomar algunas decisiones, así como proporcinar información,

  • Tendrás que facilitar una dirección de correo electrónico. Esta dirección de correo electrónico, es para la recuperación de claves y recibir notificaciones. Es importante que sea una dirección de correo electrónico válida, porque es la que se utiliza para avisarte en el caso de que se produzca un error durante el proceso de renovación automática del certificado Let’s Encrypt en tu VPS.
  • Para realizar el proceso de instalación del certificado Let’s Encrypt en tu VPS, tendrás que aceptar los términos de condiciones del servicio de Let’s Encrypt. Esto parece muy obvio.
  • Por último, tendrás que decidir si quieres habilitar tanto http como https o bien redirigir todas las llamadas a https.

Cuando la instalación del certificado ha terminado, puedes encontrar los archivos generados en /etc/letsencrypt/live. Por otro lado puedes verificar el estado de tu certificado SSL, siguiendo el enlace https://www.ssllabs.com/ssltest/analyze.html?d=midominio.es&latest. Tienes que cambiar midominio.es por el dominio para el que hayas obtenido tu certificado SSL.

Llegado a este punto deberías acceder a tu sitio utilizando el prefijo https. Es decir, que en el ejemplo, que estamos utilizando, deberíamos ser capaces de acceder a https://midominio.es.

Verificar la autorenovación

Por si no lo sabes, indicarte que los certificados de Let’s Encrypt solo duran 90 días. ¿Esto quiere decir que cada 3 meses tengo que hacer esto de nuevo?. No, no te tienes que preocupar.

El paquete que hemos instalado, se encarga de mantener nuestro certificado actualizado, con lo que no debemos preocupar por esto. Al instalar el paquete hemos instalado un timer de systemd que se ejecuta dos veces al día.

En el caso de que la distribución que estes utilizando no utilice systemd, esta funcionalidad se soluciona mediante un cron que podrás encontrar en ese caso en /etc/cron.d.

Para comprobar que el proceso de auto renovación funciona correctamente tienes que ejecutar la siguiente orden,

sudo certbot renew --dry-run

Si al ejecutar la orden anterior, no ves ningún tipo de error, todo es correcto. Cuando llegue el momento, Certbot, el cliente de Let’s Encrypt, renovará tus certificados y reiniciará Apache. Si por lo que fuera, durante el proceso de actualización, se produjera un error, Let’s Encrypt te avisará utilizando para ello, la dirección de correo electrónico, que indicaste durante el proceso de instalación. En este correo además te indcará cuando expirará la validez del certificado que tienes instalado.

El cortafuegos

En el artículo anterior sobre los primeros pasos con tu VPS, configuramos el cortafuegos. Si recuerdas para ver el estado del cortafuegos, ejecutábamos la orden,

sudo ufw status

Al instalar nuestro certificado Let’s Encrypt tendremos que habilitar el acceso por el puerto 443, o el puerto que tu elijas para esto. Así, en el caso de que este sea el elegido, la orden a ejecutar sería,

sudo ufw allow 443/tcp

Conclusión

No he hecho ninguna referencia a como habilitar apuntar tu dominio a tu VPS, porque la casuística en este caso es casi infinita. Por un lado depende del proveedor de dominios, y por otro lado del proveedor del VPS. En muchos casos resulta liosa, pero en ningún momento resulta complicado. Tener un dominio, es algo relativamente económico, generalmente menos de 1 €/mes. Con este bajo coste y con las ventajas que reporta, sin lugar a dudas, decantarse por tener tu propio dominio es una muy buena decisión.

Por supuesto, una vez tienes tu dominio, no te debes ni pensar el hecho de utilizar Let’s Encrypt en tu VPS. Como has podido ver es algo realmente sencillo de implantar. Pero lo mejor de todo es que una vez configurado te puedes olvidar. Eso no quita que no estés atento de que las cosas funcionen correctamente de vez en cuando.


Más información,