Ingeniería & Desarrollo
·
13
de
February
de
2024
·
4
mins

Protege tu sitio web: Certificados SSL, gratuitos y automatizados

con Let’s Encrypt y Certbot
por
Ingeniero Civil en Informática

Let’s Encrypt es un servicio gratuito que proporciona certificados SSL/TLS (Secure Sockets Layer) para habilitar el cifrado HTTPS en sitios web, de manera segura, libre, automatizada y abierta, creado para el beneficio público. Es un servicio proveído por el Internet Security Research Group (ISRG). Su misión es, a través certificados digitales seguros, habilitar HTTPS/TLS en nuestros sitios sin costos y de una forma muy amigable para el usuario, y de esta manera crear una web más segura para todos, resguardando la privacidad de nuestros datos.

Para esto se basa en los siguientes principios básicos:

  • Sin costo en dinero (Gratis // Gratuito // Free): cualquier persona que sea propietaria verificada de un dominio, puede usar estos certificados.
  • Automático: mediante software ejecutándose en el servidor, se pueden obtener los certificados, instalarlos y renovarlos cada año, con casi nula intervención de los usuarios.
  • Seguro: Let’s Encrypt utiliza las mejoras prácticas de seguridad TLS para la generación de CA.
  • Transparente: todos los certificados emitidos y revocados, están disponibles públicamente para que puedan ser inspeccionados.
  • Abierto: el protocolo de generación y renovación de certificados está disponible públicamente para su uso.
  • Cooperativo: es mantenido por muchas organizaciones, respaldada por The Linux Foundation, y una gran comunidad. Puede ser usado por el beneficio de cualquiera.

Luego de esta necesaria introducción, te explicaré cómo instalar estos certificados en tu servidor.

Certificados SSL gratuitos con Let's Encrypt y Certbot

Requerimientos para este tutorial

Para la elaboración de este artículo se utilizó:

  • Una instancia en la capa gratuita de Amazon, que utiliza un sistema operativo basado en Debian (yo use Ubuntu 16.10), con acceso SSH, HTTP y HTTPS (verifica esto previamente en tu proveedor, no te vaya a pasar como a mi que estuve varios minutos sin saber porque no podía acceder al puerto 443, en mi caso se hace a través de los Security Groups).
  • Un dominio propio apuntando a nuestro hosting/instancia/servidor. Es importante tener la propiedad del dominio, que normalmente se verifica tan solo con la posibilidad de acceder.
  • Una aplicación simple que tenga solo el protocolo HTTP activado.
  • Apache instalado en el servidor (además de todo lo necesario para correr la aplicación). Se pueden utilizar otros servidores de aplicaciones pero puede que incurra en algo más de trabajo manual, en este tutorial utilizamos además Passenger.
  • ¡Eso es todo!

Paso a paso

  • Accede vía SSH a tu servidor, en Amazon EC2 se hace de la siguiente forma:
ssh -i “llave.pem” usuario@ip.region.compute.amazonaws.com

*En otra publicación puedo explicarte algunas cosas sobre Amazon y sus servicios.

  • Una vez iniciada la sesión SSH, podrás navegar como un terminal cualquiera de Linux (o del SO que tenga instalado tu servidor).
  • Luego debemos instalar CertBot, el cual es el encargado de cargar y mantener actualizados los certificados, esto se hace con los siguientes comandos:
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-apache
  • Luego de esto, ya podrás utilizar el software, con el siguiente comando:
sudo certbot --apache
Paso 1
Paso 2

Si tenias todo correctamente configurado en tu servidor apache, deberían estar descritos todos los sitios que tengas configurados en la carpeta:

/etc/apache2/sites-available

Como puedes apreciarlo a continuación:

Sitios disponibles para instalar certificados

Estas 2 opciones que tengo yo, son los server names de los archivos .conf, que se encuentran en la carpeta anteriormente mencionada. A continuación te muestro algunos ejemplos:

Archivo por defecto apuntando a nuestro sitio de ww.garagelabs.cl

Una copia del archivo por defecto, apuntando a un sitio de prueba

Bueno ahora solo queda seleccionar el dominio al cual se quieren instalar los certificados seguros, seleccionando 1 o 2 si se requiere “www.garagelabs.cl” o “woo.oferus.com”. En mi caso, como ya lo hice, me avisa que ya tenia algunos instalados y que es necesaria la reinstalación de los existentes, o renovarlos. Puedes verlo a continuación (a ti no te va a aparecer la siguiente imagen, porque es tu primera instalación para dicho dominio):

Opciones para la reinstalación de certificados

Ojo que puedes volver a generar unos nuevos certificados, pero tienes un limite de 5 en un plazo de 7 días.

Nuevamente, como es tu primera vez, CertBot simplemente te los generará, mostrando lo siguiente:

Puntos importantes en la imagen:

  • Nos crea un archivo de configuración que revisaremos más adelante.
  • Nos ofrece un redireccionamiento, para que todas las peticiones HTTP se vayan HTTPS automáticamente. (Esto podría no funcionar para algunos servidores de aplicaciones, ahora te explicamos como solucionarlo)

En este caso, no tomamos la opción de redireccionamiento, ya que lo hicimos de forma manual.

Corrección del redireccionamiento (si no te funciona)

Es simple, te voy a volver a pegar una imagen que te mostré más arriba, y que probablemente paso inadvertida:

La imagen con el detalle inadvertido

Fíjate en la última línea, redirecciona cualquier petición a su versión segura.

¡ESO ES TODO! 🎉

Finalizando la instalación de los certificados seguros (SSL)

Si realizaste todos los pasos correctamente, el software te entregará un mensaje de felicitaciones como el siguiente:

Ahora permíteme mostrarte algunas cosas interesantes. Volvamos a:

/etc/apache2/sites-available

Ahí podemos encontrar un nuevo archivo, que mantiene el nombre del archivo de configuración del sitio, pero agregándole -le-ssl al nombre, quedando en mi caso de la siguiente manera: 000-default-le-ssl.conf. Este archivo es una copia del original, pero en el puerto 443, con el módulo mod_ssl.c habilitado (necesario para los CA) y agregando las siguientes líneas al final del archivo:

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/www.garagelabs.cl/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.garagelabs.cl/privkey.pem

Si sigues las rutas de cada uno de los certificados, puedes ir a revisarlos y verificarlos.

OPCIONAL: RENOVACIÓN DE CERTIFICADOS SSL

Como es bien sabido, los certificados SSL, se renuevan año a año con nuestros proveedores. Si bien existen procesos automáticos para realizar esta labor, aun tenemos mucha gente haciéndolo a mano.

Pero estos genios ya lo tenían pensado, y nos ofrecen una alternativa para activar una renovación automática para nuestros certificados. Sólo basta con agregar el siguiente comando en el terminal conectado vía SSH:

sudo certbot renew --dry-run

Conclusiones

Entendiendo el fondo y el sentido de este proyecto, es importante que todos aportemos para que este tipo de iniciativas se sigan levantando, y lograr que el navegar por Internet sea una experiencia más segura.

Let’s Encrypt funciona gracias a donaciones y sponsors, date una vuelta por este link si te interesa colaborar en el proyecto.

Espero que este tutorial te haya sido de ayuda, y te recuerdo que si tienes dudas siempre puedes contactarme, en Garage Labs siempre estamos dispuestos a ayudarte con tus proyectos.

Compartir
Compartir

Tags

SSL
Seguridad web
Sitio web
Certificados Seguros
HTTPS

Garage Labs

Publicaciones oficiales de la consultora tecnológica Garage Labs | Santiago de Chile