Certificados SSL gratis con Let's Encrypt

Feb 7, 2018 12:39 · 677 words · 4 minute read ssl bash mac programación tecnología

No creo necesario explicar que es un certificado SSL si no sólo mencionar lo importante necesario que es que cuentes con un certificado SSL instalado en tus propiedades web.

La razón de esto es por como funciona internet: cuando escribes una url o envías data a través de un formulario, tu petición pasa a través de distintos servidores hasta llegar al servidor destino.

Si tu propiedad no cuenta con un certificado SSL instalado la información ingresada por tus usuarios viajará de manera legible para estos servidores intermedios. Esto es un problema para la privacidad y seguridad de la información de tus usuarios.

La instalación de un certificado es ya considerada una buena práctica, por lo que aún si tu propiedad web no procesa datos que tu consideres “críticos” o “importantes” igual es bueno contar con un certificado SSL instalado ya que obtendrás muchos otros beneficios, como por ejemplo, el mejor posicionamiento de tu sitio en buscadores.

¿Cómo obtengo un certificado SSL?

Existen diversos emisores de certificados SSL. Estos pueden tener costos anuales entre los $USD 3.00 hasta los $USD 10,000.00 . La diferencia en estos costos va en los agregados, servicios adicionales y reputación del emisor.

El proceso en la creación de un certificado se resume a:

  1. Generar un archivo CSR.- Esto puedes hacerlo con alguna herramienta gráfica o por línea de comando
  2. Enviar el CSR al emisor que elijas
  3. (Luego del pago) Recibirás el certificado firmado por el emisor. Este será válido por el tiempo contratado

Ahora, ¿Qué es Let’s Encrypt?

Let’s Encrypt es un emisor oficial de certificados SSL respaldado por la ISRG (Internet Security Research Group) que a través de distintos patrocinios de empresas como Mozilla, Cisco, Chrome, facebook, etc. ofrece el servicio de emisión de certificados SSL sin costo alguno.

A diferencia de los otros emisores en donde las vigencias de los certificados cuentan con al menos un año de duración, los certificados emitidos por Let’s Encrypt cuentan con una vigencia fija de 90 días.

<yoda_voice>Preocuparte no debes</yoda_voice>

Let’s encrypt permite la utilización de clientes que usen el protocolo ACME para la generación, renovación e instalación de los certificados por lo que estas tareas son cosas muy simples.

¿Cómo?

Existen diversos clientes que usen el protocolo ACME pero yo tengo una costumbre ya por Certbot desde la línea de comando.

Su instalación en MacOS es bastante sencilla a través de homebrew:

brew install certbot

Certbot cuenta con diferentes “authenticators” que se utilizarán para certificar que efectivamente controlas los dominios a los cuáles pretendes registrar un nuevo certificado. Incluso, si lo deseas, puedes utilizar los “installers” que permitirán la instalación de un certificado sobre un servidor web de forma automática.

En mi caso yo prefiero la emisión de un certificado de forma manual en mi maquina de trabajo para luego instalarlo directamente en los ambientes requeridos.

Para ello puedes utilizar lo siguiente:

sudo certbot certonly --manual -d tudominio.com --preferred-challenges dns

Se utiliza sudo porque certbot necesita permisos de escritura en carpetas especiales. Debes reemplazar tudominio.com por el dominio que requieras un certificado.

Al momento de la escritura de este post los “preferred-challenges” disponibles son:

  • http.- Let’s encrypt intentará validar un archivo estático por HTTP en el dominio indicado
  • dns.- Let’s encrypt intentará validar un registro TXT en el dominio indicado.

En mi caso utilizo “dns” como preferred-challenges ya que me es más fácil de administrar.

Luego de correr el script obtendrás dos archivos: privkey.pem y fullchain.pem . Estos son tu llave privada y certificado público respectivamente. Con ellos podrás configurar ya tu servidor web para empezar a servir contenido sobre SSL.

Renovación del certificado

La renovación del certificado también es posible a través del cliente Certbot y es muy sencilla.

En caso hayan automatizado el proceso de instalación sólo deberán ejecutar lo siguiente para renovar todos sus certificados:

sudo certbot renew

En nuestro caso, de instalación manual, es diferente y debe hacerse como una nueva emisión (como en el paso anterior):

sudo certbot certonly --manual -d tudominio.com --preferred-challenges dns

Simple, no? Ahora ya no tenemos excusas para contar con SSL para todas nuestras propiedades.