Blog 

Certificados seguros libres y sin costos en mi sitio web

Let’s Encrypt es un certificado de autoridad (en adelante CA) seguro, libre, automatizado y abierto, 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 tod@s, resguardando la privacidad de nuestros datos.

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

  • Sin costo en dinero: 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é como instalar estos certificados en tu servidor.

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
Certificados seguros libres y sin costos en mi sitio web
Paso 1
Certificados seguros libres y sin costos en mi sitio web
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:

Certificados seguros libres y sin costos en mi sitio web
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:

Certificados seguros libres y sin costos en mi sitio web
Archivo por defecto apuntando a nuestro sitio de ww.garagelabs.cl
Certificados seguros libres y sin costos en mi sitio web
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):

Certificados seguros libres y sin costos en mi sitio web
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:

Certificados seguros libres y sin costos en mi sitio web

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:

Certificados seguros libres y sin costos en mi sitio web
La imagen con el detalle inadvertido

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

¡ESO ES TODO!

FINALIZANDO INSTALACIÓN

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

Certificados seguros libres y sin costos en mi sitio web

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

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 contactarnos, en Garage Labs siempre estamos dispuestos a ayudarte.

Publicado el 10 abril, 2019

Categorías

Etiquetas

Te puede interesar

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Hablemos

¿Te ayudamos con la IMPLEMENTAR SOFTWARE EN TU EMPRESA?

Estaríamos encantados de ayudarte